jQuery submit()不适用于我的undefined属性?

时间:2012-05-26 10:19:07

标签: jquery submit

这就是我得到的:

<form method="post" id="myform" class="myform">
    <input type="submit" onclick="return claim();" name="submit" class="onsubmit" value="" />
</form>
function claim() {
    var c = confirm('You sure?');

    if (!c) {
        return false;
    }

    var password = prompt("Please mention pw","");
    if (password != null && password != "") {
        $.post(
            "/claim/", 
            { partner_pwd: password },
            function(data) {
                if (data == '1') {
                    $('form').submit(function() {
                        alert('Handler for .submit() called.');
                    });
                }
            });
        }

        return false;
    }

这很有效,但我的问题是它不会提交表单。我在$('form').submit()语句中尝试了$('#myform').submit()data == '1'。我在if语句中尝试alert(1),它显示正常,我只需要提交表单,为什么不能这样做?

更新

控制台说:

Uncaught TypeError: Property 'submit' of object #<HTMLFormElement> is not a function jquery.min.js:3 f.event.trigger

5 个答案:

答案 0 :(得分:4)

你犯了以下错误:

  1. jQuery选择器'form'过于笼统并返回一个数组。因此,请将其更改为'#myform'
  2. 此外,您的javascript永远不会允许您提交表单。罪魁祸首是最后一行:return false;。即使在成功验证表单后,该行也阻止了它。应该是return true;。 @ 11684指出了这个错误,但没有人理解他并被一些人贬低。
  3. 无论如何,这是调试代码。

     function claim()
    {
        var c = confirm('You sure?');
    
        if (!c) {
            return false;
        }
    
        var password=prompt("Please mention pw","");
        if (password!=null && password!="")
          {
                $.post("/claim/", { partner_pwd: password },
                   function(data) {
                        if(data == '1')
                        {
                            $('#myform').bind('submit',function() {
                              alert('Handler for .submit() called.');
                            });
                        }
                   });
          }
    
        return true;
    
    }
    

答案 1 :(得分:3)

要引发事件,请调用相关函数,而不使用如下参数:

$('form').submit();

您当前的代码只是添加一个提交处理函数,在表单提交时执行,它实际上并没有提交表单。

答案 2 :(得分:3)

尝试:

$('#myform')[0].submit();

答案 3 :(得分:0)

正如Rory所说,你的代码只会添加一个事件处理程序。你需要做

$(form).submit()

没有参数。如果要附加处理程序,然后稍后触发事件,可以使用

$(form).trigger('submit')

答案 4 :(得分:0)

我有一个类似的问题,除了我试图从Javascript提交表单,而不是附加一个onsubmit事件处理程序。问题是我正在使用的表单上的提交按钮名称=“提交”...我怀疑这也是造成原始海报问题的部分原因。当表单有一个名为“submit”的按钮时,它会在表单对象上创建一个“submit”属性,覆盖“submit”属性的常用值,该属性是一个提交表单的函数。

有关详细信息,请参阅javascript submit() is not a function?