Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery.submit()和变量存在问题_Javascript_Jquery - Fatal编程技术网

Javascript jquery.submit()和变量存在问题

Javascript jquery.submit()和变量存在问题,javascript,jquery,Javascript,Jquery,我不知道该做什么,为什么它不起作用。这是我第一次尝试这样的事情 这是一把小提琴 您会注意到,在javascript中,我有一个var错误,默认为false 如果有错误,则为真 我已经在表单上的每个输入旁边显示了错误值 如果变量错误为false,则应提交表单,否则不应提交表单 出现错误时会出现问题,然后更正,表单将不会提交 看这把小提琴。表单直接指向google进行测试。我认为,问题在于错误位于函数内部,该函数将在blur上调用。当函数调用完成时,它将处于未定义状态。协议是变量应该是全局的。您需要

我不知道该做什么,为什么它不起作用。这是我第一次尝试这样的事情

这是一把小提琴

您会注意到,在javascript中,我有一个var错误,默认为false

如果有错误,则为真

我已经在表单上的每个输入旁边显示了错误值

如果变量错误为false,则应提交表单,否则不应提交表单

出现错误时会出现问题,然后更正,表单将不会提交


看这把小提琴。表单直接指向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变量的状态。