我不知道为什么以下行无法正常运行:
$('form[name="updateNetwork"]').unbind('submit').submit();
我可以通过以下方式提交表单
$("form").unbind('submit').submit();
但是,这样做不会传递表单的名称属性,我的后端代码必须识别该属性才能正确处理表单提交。任何帮助将不胜感激。
谢谢
最佳答案
您的页面中似乎只有一个表单,并且您尝试使用 jQuery 中的 name 属性选择它的唯一原因是 jQuery 会将表单的名称发送到服务器。
好吧,那是行不通的。一旦您通过 jQuery 获得了对表单的引用,您使用哪个选择器就不再重要了。如果您想要将 name
参数与表单名称一起发送到后端代码,请在表单内使用隐藏输入:
<input type="hidden" name="form-name" value="updateNetwork" />
然后,您可以按照您想要的方式获取对该表单的引用。正如 @anvlasop 所说,最好的方法是为您的表单提供一个 id
属性。
已编辑
您以错误的方式创建 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();
});
如果验证期间出现异常,这也会阻止表单的发送。
关于javascript - 在 jQuery 表单提交中传递名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22454884/