我有一个很长的表格,我正在使用 jQuery 验证插件进行验证。表单验证后,我希望提交按钮更改为确认按钮,上面带有关于检查表单错误的适当消息。再次单击此按钮时,只要仍然填写所有必填字段,这次应该提交表单。我有以下内容:
var confirmed = function(){
alert($("#someForm").attr("name")); //just to see the function fire...
$("#someForm").submit();
return true;
}
$(document).ready(function(){
$("#someForm").validate({
submitHandler: function(form){
var oldBtn = $("#submit");
var newBtn = oldBtn.clone();
newBtn.click(confirmed)
newBtn.text("Confirm");
newBtn.insertBefore(oldBtn);
oldBtn.remove();
newBtn.attr({"id": "submit"});
}
});
});
...
<button type="submit" id="submit">Submit</button>
它可以验证表单,然后按钮更改文本,单击时触发函数(警报中有表单的名称),但表单永远不会真正提交。任何帮助或想法将不胜感激。
谢谢
编辑:好的,我想我已经弄清楚了。我隐藏了提交按钮和一个名为 Validate 的按钮,它只检查表单是否经过验证而不使用$("#someForm").valid();
如果它签出,我隐藏了“提交”按钮并显示“确认”按钮以及一条关于检查提交的小消息等。见下文:
$(document).ready(function(){
$("#submitBtn").hide();
$("#confMessage").hide();
$("#someForm").validate();
});
var checkValid = function(){
var isValid = $("#volunteer").valid();
if(isValid){
$("#validBtn").remove();
$("#submitBtn").show();
$("#confMessage").show();
}
}
...
<p id="confMessage">Please review your submission.</p>
<p><button id="validBtn" onclick="checkValid()">Validate</button>
<button type="submit" id="submitBtn">Submit</button></p>
完美运行,比我的原始代码干净得多!