我不知道为什么以下行无法正常运行:
$('form[name="updateNetwork"]').unbind('submit').submit();
我可以用
提交表单$("form").unbind('submit').submit();
但是这样做不会传递我的后端代码必须识别的表单的name属性,以便正确处理表单提交。非常感谢任何帮助。
由于
答案 0 :(得分:1)
您可以为表单提供ID。尝试类似这样的HTML代码:
<form id='form_id'>
//your form elements here...
</form>
然后,使用jQuery,您可以像这样引用表单:
$("#form_id").unbind('submit').submit();
答案 1 :(得分:1)
您的页面中似乎只有一个表单,并且您尝试使用jQuery中的name属性选择它的唯一原因是jQuery会将表单的名称发送到服务器。
嗯,这不会奏效。一旦通过jQuery获得对表单的引用,使用哪个选择器并不重要。如果您想要的是使用表单名称向您的后端代码发送name
参数,请在表单中使用隐藏的输入:
<input type="hidden" name="form-name" value="updateNetwork" />
然后,您可以以任何方式获得对表单的引用。正如@anvlasop所述,最好的方法是为您的表单提供id
属性。
EDITED
您正在以错误的方式创建jQuery表单对象。如果你有这个:
<input type="submit" name="updateNetwork" />
然后你不能这样做:
$('form[name="updateNetwork"]).submit();
我假设您在submit()
事件的事件处理程序中调用此方法submit
。别这么做!您应该做的是,如果验证中存在错误,则只能preventDefault
,并以其他方式发送表单:
//Never do this:
$('form').bind('submit', function(e) {
var valid;
//code to validate
e.preventDefault();
if (valid) $('form').unbind('submit').submit();
});
这样做:
$('form').bind('submit', function(e) {
var valid;
try {
//code to validate
} catch (error) {
valid = false;
}
if (!valid) e.preventDefault();
});
这也会阻止发送表单,因为验证过程中存在异常。