requestSubmit offers a new way to validate a form before submitting it

栏目: IT技术 · 发布时间: 6年前

内容简介:HTMLWhat remained a little bit tricky was to submit forms from within the scope of JavaScript. TheLet's assume we have the following HTML form:

HTML form elements are the foundation for the interactions in web pages. And boy, they improved quite a little bit over the last years. Developers now can use different types ( number , tel , color , ...) and set different input modes ( text , decimal , email , ...) to only name two examples.

What remained a little bit tricky was to submit forms from within the scope of JavaScript. The HTMLFormElement defines a submit method , but it does not quite behave as one would expect.

HTML's default behavior and the not matching submit method

Let's assume we have the following HTML form:

<form action="">
  <label>
    Your name
    <input type="text" required>
  </label>
  <button>Submit</button>
</form>

And some JavaScript:

document.querySelector('form')
  .addEventListener('submit', (event) => {
  // don't submit the form if it's valid
  // only log to the console
  event.preventDefault();
  console.log('submitted form');
});

When one clicks the submit button the following happens:

submit
submit

The submit event gives developers a way to react to form submissions. And it's used a lot! Common scenarios are to call preventDefault and make AJAX requests using JavaScript.

But what happens when you grab the form and submit it in JavaScript land?

The answer is – the form is submitted! ( ‍♂️ duh!) What's surprising is that there won't be an input validation , and there won't be a submit event . You would transfer all the values included in the form at the given time. This could lead to unexpected behavior, and it is not what one would expect by calling submit .

You can work around this problem by calling click on the submit button. This action triggers the standard behavior, including validation and a fired submit event.

And this approach works, great – case closed! I never thought of it as elegant or pretty, though.

A new method that does what developers expect

People started to work on a solution to this in June 2019 (the proposal is an interesting read). The HTMLFormElement now includes an extra method called requestSubmit . And this method does the same as clicking a submit button. :tada:

There is not much magic to it – it does what you expect and offers the great goodies HTML forms ship by default. I have to say – I'm excited about it!

submit requestSubmit
doesn't trigger submit event triggers submit event
doesn't trigger validation triggers validation
can't be canceled can be canceled via event.preventDefault in a submit event handler

The browser support is as follows (there is not caniuse.com entry at the time of writing:

  • :white_check_mark: Chromium browser (the new Microsoft Edge, Chrome, Opera, ...)
  • :x: Firefox (it's currently behind a flag and will ship with v75)
  • :x: Safari

You can read more about it on MDN , have a look at it in the spec or see it in action on CodePen .

You can see a #devsheet visualizing the difference in the video below.


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

浴缸里的惊叹

浴缸里的惊叹

顾森 / 人民邮电出版社 / 2014-7 / 49.00元

《浴缸里的惊叹》是一本趣题集,里面的题目全部来自于作者顾森十余年来的精心收集,包括几何、组合、行程、数字、概率、逻辑、博弈、策略等诸多类别,其中既有小学奥数当中的经典题目,又有世界级的著名难题,但它们无一例外都是作者心目中的“好题”:题目本身简单而不容易,答案出人意料却又在情理之中,解法优雅精巧令人拍案叫绝。作者还有意设置了语言和情境两个类别的问题,希望让完全没有数学背景的读者也能体会到解题的乐趣......一起来看看 《浴缸里的惊叹》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具