表单问题提交jquery ajax

时间:2011-05-31 09:04:08

标签: php jquery ajax

我有这样的代码。

<html>
<head>
<title>Captcha With Refresh Feature</title>
<script src="jquery.js" type="text/javascript"></script>
<script type="text/javascript">

function check1(){ 
var search_val=$("#security_code").val(); 
if(search_val == ''){
alert("Please enter code");
return false;
}else{
$.ajax({
type: "POST",
url: "find.php",
data: "search_term="+search_val,
success: function(msg){

 if(msg == 'failure'){
 document.myform.submit();
 }else{
 alert("Please enter correct code");
 return false;
 }
 }
 });
 }
 return false;
}  
}
</script>
</head>
<body onLoad="new_captcha();">
<form action="check.php" method="post" name="myform" id="myform" onSubmit="return     check1()">
<table>
<tr>
<td>&nbsp;</td>
<td><img border="0" id="captcha" src="image.php" alt="">
&nbsp;<a href="JavaScript: new_captcha();"><img border="0" alt="" src="refresh.png"     align="bottom"></a></td></tr>
<tr><td>Name</td><td><input type="text" name="u_name" id="u_name" /></td></tr>
<tr>
<td>Security Code:</td>
<td><input type="text" name="security_code" id="security_code">
 &nbsp;</td><td><input type="submit" name="submit" value="Check"></td>&nbsp;<td><label id="security_code_error"></label><label id="security_code_error1"></label></td></tr>         </table>
</form>
 </body>
</html>

我的ajax响应将成功或失败。 我可以提醒并检查我的ajax响应。 现在,我有表单提交的问题。

我收到以下错误: document.myform.submit不是函数

如果响应成功,如何强制或提交表单。 你能帮帮我吗?

谢谢 - Haan的

6 个答案:

答案 0 :(得分:2)

您有一个名为submit的输入。这会导致最初为theForm.submit的值的函数替换为对该HTMLElementNode的引用。

重命名输入。

(或者用document.createElement('form').submit.call(theForm);

进行黑客攻击)

答案 1 :(得分:1)

document.myform.submit正在名为“myform”的表单中找到名为“submit”的控件。重命名按钮,查看标准的submit()函数是否返回。

答案 2 :(得分:1)

如果使用jQuery进行绑定,而不是进行内联JS调用,这将更容易:

$('#myForm').submit(function() {
    var search_val = $("#security_code").val(),
        form = this;

    e.preventDefault();

    if (search_val == '') {
        alert("Please enter code");
    } else {
        $.ajax({
            type: "POST",
            url: "find.php",
            data: "search_term=" + search_val,
            success: function (msg) {
                if (msg == 'failure') {
                    form.submit();
                } else {
                    alert("Please enter correct code");
                }
            }
        });
    }
});

尽管如此,主要问题是name="submit"。您不应该提供覆盖表单方法或属性的表单元素名称,例如submitmethodaction。默认属性/方法将被遮盖。来自MDC docs

  

如果表单控件(例如提交按钮)的名称或ID为submit,则会掩盖表单的提交方法。

答案 3 :(得分:0)

你可以做这样的事情。

$('#myform').submit();

答案 4 :(得分:-1)

我可以看到你使用Jquery,所以$("#myfom").submit()应该可以工作。

答案 5 :(得分:-1)

您可以使用jQuery触发表单的提交,如下所示:

$( “#myForm会”)提交();