当我使用通用警报框时,表单验证工作正常但如果我尝试使用JQuery脚本使警报框看起来不错,则表单验证并提交,尽管返回的值为false
标准警告框
function validate(){
if( document.audit_form.audit_name.value == "" )
{
alert( "Please select a name for your audit" );
document.audit_form.audit_type.focus() ;
return false;
}
return true;
}
尝试使用codecanyon中的jQuery MsgBox
function validate(){
if( document.audit_form.audit_name.value == "" )
{
$.msgbox("Please select an audit type",
{
type:"alert",
buttons: [
{type: "submit", value: "Ok"}
]
},
function(result){
if (result && result=='Ok'){
return false;
}
});
}
return true();
}
尝试使用Apprise
function validate(){
if( document.audit_form.audit_name.value == "" )
{
apprise('Please enter a name for your audit?', {'textOk' : 'Ok',}, function(r) {
if(r) {
return( true );
} else {
return (false);
}
});
}
}
在所有三个实例中,警告框显示它应该的时间但是表单仍然提交的JQuery版本。使用
调用这些函数 <form id="audit_form" name="audit_form" method="post" enctype="multipart/form-data"
action="<?php echo $_SERVER['PHP_SELF']; ?>" onsubmit="return validate();">
答案 0 :(得分:0)
$.msgbox
和apprise
都不是阻止函数,结果会在函数&#39;之前返回。回调,你应该改变你的逻辑。基本上,表单提交should的方式如下:
$('#audit_form').submit(function(event){
event.preventDefault();
yourUIAlertFunction(..., ..., function(isSuccess){
if(isSuccess){
submitFormLogic();
} else {
hideAlertAndShowErrors();
}
});
});