在我使用<button name="submit" id="register" value="Register">Continue</button>
比我决定将该帖子更改为jquery ajax帖子:
<script type="text/javascript">
$(document).ready(function () {
$("#register").click(function () {
if (!$("form").valid())
return false;
var isContinue = false;
$.ajax({
url: "/Validate",
type: "POST",
dataType: "text",
data: { recaptcha_challenge_field: $("input#recaptcha_challenge_field").val(), recaptcha_response_field: $("input#recaptcha_response_field").val() },
cache: false,
success: function (data, textStatus, xhr) {
isContinue = data === 'true';
},
error: function (xhr, st, err) {
alert("Sorry error occured, try again later.");
},
complete: function () {
alert(isContinue);//i could see that alert
if (isContinue) {
alert(isContinue); //i could see that alert
$("form").submit();
alert(isContinue); //i could see that alert
}
else {
return false;
}
}
});
});
});
</script>
<a class="button" id="register">Continue</a
因此,如果所有验证包括capthca通过,而不是我点击提交按钮和表单时未在服务器上发布。我使用chrome和opera network dev tools
检查了请求,并且他们没有显示发布操作,但是根据我在javascript中放置的警告,应该发布表单。
然后,对于测试,我放置了另一个简单的提交按钮和表单,因此出于某种原因$("form").submit();
不希望发布表单。
可能有些人可能有任何想法可能是什么?
更新
当我尝试ajax post button
时,我正在评论simple post button
,但问题是
我有另一个back button
:)看起来像这样:
<button name="submit" class="cancel" id="back" value="Back">
所以问题实际上是name="submit"
,我只是将其删除并立即全部工作。
1}}需要花费很长时间来解决问题,感谢您的帮助。
答案 0 :(得分:2)
这是因为您命名为submit
的按钮覆盖了submit
元素上的form
方法,因此代替form.submit
是提交表单的函数,它现在是对button
元素的引用。
解决此问题的最简单方法是重命名button
元素。
区分$('form').submit()
和form.submit()
非常重要。 $('form').submit)
是jQuery method,不受名为submit的按钮的影响,但在幕后,jQuery调用实际 {{1}上的submit
属性} element, 受名为HTMLForm
的按钮
bug about this上有一个http://bugs.jquery.com,但如上所述,jQuery本身并不是实际上的问题。
你的代码有另一个问题;你不应该在你的点击处理程序中使用submit
,因为这是在页面上为 alllll 表单构建一个jQuery对象;因此,您要检查 alllll 表单是否有效,并提交 alll 表单。相反,请使用$('form')
答案 1 :(得分:0)
那是有效的功能吗? 它会在提交时返回false。
if (!$("form").valid())
return false;