我首先使用它:
HTML:
<form onsubmit="return validate()">
...
<input type="submit" id="submit-button"/>
</form>
JS:
function validate() {
// many lines for a big validation with regex and so on...
$('form').submit();
}
我注意到,加载的时间非常长,所以我将其更改为:
HTML:
<form>
...
<input type="submit" id="submit-button"/>
</form>
JS:
function validate() {
// many lines for a big validation with regex and so on...
$('form').submit();
}
$('#submit-button').on('click', function(e) {
e.preventDefault();
validate();
});
加载时间还可以,大约快100倍!
有人可以给我一个 - 希望 - 简短的回答吗?
答案 0 :(得分:4)
在第一个示例中,您在submit
回调中触发了submit
事件,然后调用堆栈超出[see fiddle]。
第二个示例依赖于click
事件,因此似乎可以正常工作,但您应该在验证后通过ajax更好地触发HTTP调用。
答案 1 :(得分:0)
您的功能称为validate()
,但我没有看到任何验证,只有submit
事件。问题是,你设置它的方式是错误的。 validate()
应该返回true/false
,以便表单知道它是否应该继续。相反,您的验证功能应该更像这样:
function validate() {
//many lines for a big validation with regex and so on...
if (val=='') { return false; }
else { return true; }
}
现在,您的表单只会在validate()
函数返回true
时提交,否则将无法继续。这将解决您的问题,因此您无法解决问题。