关于HTML5验证的表单事件失败了吗?

时间:2017-11-07 15:04:48

标签: javascript html5 forms validation

我一定错过了什么。

我有一张表格:

<form action="/" method="post">
  <input type="text" name="field" required />
  <input type="submit" value="Submit" /> 
</form>

我希望在用户点击submit按钮时添加特殊行为而不填写required字段。我有jQuery所以我的直觉写道:

$('form').on('submit', function(e){
  console.log('Adding special behavior');
});

但这并未触发。寻找$('form').on('validate')或其他东西,却找不到任何东西。

此步骤是否没有触发任何事件?我是否必须删除required并手动处理所有验证?这将是令人惊讶的!

由于

编辑:这不是this question的重复,因为我不(想)使用jquery.validate.js而我的问题不依赖于jQuery(我碰巧使用它,但这只是帮助明晰)。这是我想澄清的HTML5行为。

2 个答案:

答案 0 :(得分:2)

当您的输入具有必需属性时,浏览器会在提交表单之前确保输入有效。因此,您的活动永远不会被触发。

但是,您可以在表单中添加novalidate属性,以绕过浏览器验证并执行手动验证,同时在输入上保留必需的属性。

<form action="/" method="post" novalidate>
    <input type="text" name="field" required />
    <input type="submit" value="Submit" />
</form>

此外,如果您想停止正常提交表单,则必须在活动中执行preventDefault

$('form').on('submit', function(e){

    e.preventDefault();
    console.log('Adding special behavior');

});

以下是演示:https://jsfiddle.net/nyecdfrj/

答案 1 :(得分:0)

使用表格onsubmit:

< form action="/" method="post" onsubmit="test()">

function test() {
return false; //never submit
}