即使验证返回false,表单仍然提交
Form still submits even though validation returns false
当我使用通用警报框时,表单验证工作正常,但如果我试图使用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();">
$.msgbox
和apprise
都不是阻塞函数,并且结果在函数回调之前返回,您应该更改逻辑。基本上,你提交的表格应该是这样的:
$('#audit_form').submit(function(event){
event.preventDefault();
yourUIAlertFunction(..., ..., function(isSuccess){
if(isSuccess){
submitFormLogic();
} else {
hideAlertAndShowErrors();
}
});
});
相关文章:
- HTML表单提交时未执行外部函数
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 将图像上传ajax与表单提交ajax相结合
- Javascript无法处理表单提交
- 如何在我的情况下禁用表单提交
- 加载后的页面与ajax表单提交不起作用
- angularjs-控制器在表单提交时未调用
- 禁用带有字符白名单的表单提交
- 如何使用Google Analytics跟踪表单提交
- 使用javascript将表单提交到iframe目标中
- e.preventDefault在表单提交时被忽略
- AngularJS JQuery Ajax表单提交等效
- JavaScript表单提交帮助
- PHP表单提交和重定向
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交
- setTimeOut AFTER jQuery表单提交
- 从函数中选择要触发表单提交的正确元素
- JavaScript表单提交没有't fire asp服务器端点击功能的提交按钮
- 表单提交问题,如何在我的URL末尾获得ID的值
- Javascript使用Confirm取消表单提交