我有这样的代码。
<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> </td>
<td><img border="0" id="captcha" src="image.php" alt="">
<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">
</td><td><input type="submit" name="submit" value="Check"></td> <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
您有一个名为submit
的输入。这导致原本是theForm.submit
值的函数被替换为对该HTMLElementNode的引用。
重命名输入。
(或者用document.createElement('form').submit.call(theForm);
破解)
document.myform.submit正在名为"myform"的表单中查找名为"submit"的控件。重命名你的按钮,看看标准的submit()函数是否会回来。
如果您使用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"
。不应为覆盖表单的方法或属性的表单元素提供名称,例如submit
、method
、action
。默认属性/方法将被遮挡。来自MDC文档
如果表单控件(如提交按钮)的名称或id为submit,它将屏蔽表单的提交方法。
您可以这样做。
$('#myform').submit();
正如我所看到的,您使用Jquery,所以$("#myfom").submit()
应该可以工作。
您可以使用jQuery来触发表单的提交,如下所示:
$("#myform").submit();