JQuery提交 - 无限循环

时间:2016-09-30 14:23:49

标签: javascript jquery forms

我尝试在提交表单之前禁用所有具有样式display:none的元素。

如果有e.preventDefault(),表单根本没有提交,如果没有e.preventDefault(),则会发生无限循环。

$(document).on('submit', 'form', function (e) {
    e.preventDefault();
    console.log($(':input:hidden').length);
    $('#reservation-form > :input:hidden').attr("disabled", true);
    $('#reservation-form').unbind('submit').submit();

});

您是否知道如何在提交此表单之前禁用所有display:none字段?

3 个答案:

答案 0 :(得分:2)

您将事件绑定到document级别,因此要取消绑定submit,您也应该在document级别解除绑定。

据说,最简单的方法是调用DOM本机submit()事件:

$('#reservation-form')[0].submit();

BTW,对于布尔属性,更好的是使用.prop(),即使在你的情况下,它也没有改变:

$('#reservation-form > :input:hidden').prop("disabled", true);

答案 1 :(得分:2)

您不必运行$('#reservation-form').unbind('submit').submit();

删除e.preventDefault();调用并在函数末尾返回true:

$(document).on('submit', 'form', function (e) {
    console.log($(':input:hidden').length);
    $('#reservation-form > :input:hidden').attr("disabled", true);
    return true;
});

这可以为您提供所需的行为,而无需绑定和取消绑定事件。

答案 2 :(得分:0)

您使用错误的选择器来获取隐藏输入类型的元素。 你应该使用:

$('input[type=hidden]')

文档:Css Selectors