0

我正在为使用 HTML 5 表单验证 API 的 HTML 5 应用程序编写一些单元测试。我submit在表单上附加了一个事件处理程序,该处理程序在序列化为 JSON 并将其传递给我的服务器之前进行了一些自定义处理。

不过,我发现,如果我submit()在表单上启动一个 jQuery 事件,即使它无效,我的提交处理程序仍然会被调用。

相反,我希望我的事件处理程序不会因为表单无效而被调用。

我创建了一个 JSFiddle 来演示(在 Chrome 20 中测试):

http://jsfiddle.net/jonbca/SYg4h/22/

那么,什么给了?

4

3 回答 3

2

触发“.submit()”处理程序与 HTML5 表单验证机制没有任何关系。该机制实际上完全独立于 JavaScript,实际上它在 DOM API 中几乎不可用。您可以在表单元素上显式调用“checkValidity()”,但这只会返回一个布尔结果,并且不会执行用户单击“提交”表单控件时发生的任何可视表单更新。

重要的是要记住,许多花哨的 HTML5“智能标记”行为旨在让事情在不需要JavaScript 的情况下发生。

于 2012-07-18T15:41:53.057 回答
0

尝试触发提交按钮:

$('#submitBtn').click();

如果你没有,就做一个隐藏的,复制动作。

小提琴:http: //jsfiddle.net/SYg4h/30/

于 2012-07-18T15:38:04.963 回答
-1

尝试在按钮上使用点击处理程序

$('#myform').submit(function (e) {
    // check for validation here
    var value = $('#foo').val();
    if (!value || value == undefined)
        $('#message').html('It did not submit');
    else
        $('#message').html("It submitted");
    return false;
});

$('#submitBtn').click(function(){
    $('#myform').submit();
});

试试这个:http: //jsfiddle.net/Cqzcu/4/

于 2012-07-18T15:36:03.233 回答