Javascript jquery.submit()和变量存在问题
我不知道该做什么,为什么它不起作用。这是我第一次尝试这样的事情 这是一把小提琴 您会注意到,在javascript中,我有一个var错误,默认为false 如果有错误,则为真 我已经在表单上的每个输入旁边显示了错误值 如果变量错误为false,则应提交表单,否则不应提交表单 出现错误时会出现问题,然后更正,表单将不会提交Javascript jquery.submit()和变量存在问题,javascript,jquery,Javascript,Jquery,我不知道该做什么,为什么它不起作用。这是我第一次尝试这样的事情 这是一把小提琴 您会注意到,在javascript中,我有一个var错误,默认为false 如果有错误,则为真 我已经在表单上的每个输入旁边显示了错误值 如果变量错误为false,则应提交表单,否则不应提交表单 出现错误时会出现问题,然后更正,表单将不会提交 看这把小提琴。表单直接指向google进行测试。我认为,问题在于错误位于函数内部,该函数将在blur上调用。当函数调用完成时,它将处于未定义状态。协议是变量应该是全局的。您需要
看这把小提琴。表单直接指向google进行测试。我认为,问题在于
错误
位于函数内部,该函数将在blur上调用。当函数调用完成时,它将处于未定义状态。协议是变量应该是全局的。您需要将其置于$(文档)上方。ready()
这应该可以:
var error = false;
$('#joinForm input').blur(function() {
var id = $(this).attr('id');
var val = $(this).val();
if (id == 'email') {
$('#emailMsg').hide();
if (val == '') {
error = true;
$('#' + id).after('<div id="emailMsg" class="error">' + error + '</div>');
}
else {
$('#' + id).after('<div id="emailMsg" class="success">' + error + '</div>');
}
}
if (id == 'cemail') {
$('#cemailMsg').hide();
}
if (id == 'password') {
$('#passwordMsg').hide();
if (val == '') {
error = true;
$('#' + id).after('<div id="passwordMsg" class="error">' + error + '</div>');
}
else {
$('#' + id).after('<div id="passwordMsg" class="success">' + error + '</div>');
}
}
if (id == 'cpassword') {
$('#cpasswordMsg').hide();
}
if (id == 'username') {
$('#usernameMsg').hide();
if (val == '') {
error = true;
$('#' + id).after('<div id="usernameMsg" class="error">' + error + '</div>');
}
else {
$('#' + id).after('<div id="usernameMsg" class="success">' + error + '</div>');
}
}
$('#joinForm').submit(function(){
if (error == true) {
return false;
}
else {
return true;
}
});
});
var错误=false;
$('#joinForm input').blur(函数(){
var id=$(this.attr('id');
var val=$(this.val();
如果(id=‘电子邮件’){
$('#emailMsg').hide();
如果(val=''){
错误=真;
$('#'+id.),在(''+error+'')之后;
}
否则{
$('#'+id.),在(''+error+'')之后;
}
}
如果(id=='cemail'){
$('#cemailMsg').hide();
}
如果(id=‘密码’){
$('#passwordMsg').hide();
如果(val=''){
错误=真;
$('#'+id.),在(''+error+'')之后;
}
否则{
$('#'+id.),在(''+error+'')之后;
}
}
如果(id='cpassword'){
$('#cpasswordMsg').hide();
}
如果(id==“用户名”){
$('#usernamemg').hide();
如果(val=''){
错误=真;
$('#'+id.),在(''+error+'')之后;
}
否则{
$('#'+id.),在(''+error+'')之后;
}
}
$('#joinForm')。提交(函数(){
如果(错误==true){
返回false;
}
否则{
返回true;
}
});
});
我认为您需要为每个要检查错误的输入创建一个关联数组,其中包含一个元素。然后,在执行提交事件时,可以在数组上循环,查看哪些输入处于错误状态。如果有,请阻止提交完成。好的,我现在正在尝试,谢谢。在我尝试了你的想法之后,我意识到如果之前发生了错误,这将始终是真的,因为函数中没有设置变量。所以我更新了它,使error=false;在所有的成功状态下,它现在与函数外部声明的值为null的变量一起工作。。。谢谢你的输入。根据我的说法,验证需要放在一个不同的函数中,该函数返回true或false。在模糊上,调用这个函数来更新错误变量。在validate()函数中,保留一个临时变量,该变量最初表示true,如果有任何内容变为false,它应该继续执行,但不允许任何其他字段验证将其值从false更新为true。最后返回temp变量的状态。