在jQuery表单提交中传递名称

时间:2014-03-17 12:56:53

标签: javascript jquery forms submit

我不知道为什么以下行无法正常运行:

$('form[name="updateNetwork"]').unbind('submit').submit();

我可以用

提交表单
$("form").unbind('submit').submit();

但是这样做不会传递我的后端代码必须识别的表单的name属性,以便正确处理表单提交。非常感谢任何帮助。

由于

2 个答案:

答案 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();
});  

这也会阻止发送表单,因为验证过程中存在异常。