Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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 单击可重新计数的函数_Javascript_Jquery - Fatal编程技术网

Javascript 单击可重新计数的函数

Javascript 单击可重新计数的函数,javascript,jquery,Javascript,Jquery,我正在运行onclick验证函数。当您最初单击按钮时,它会遍历每个字段并确保验证是否正确。它目前只通过控制台告诉我有多少错误,或者是否没有错误 第一次就成功了!但是,当我修复错误并再次单击按钮时,它仍然表示在修复之前存在错误 我的问题是,有没有办法让按钮重新计数或“刷新”?这是我的代码 function moveOn(){ if (errors > 0) { console.log(errors); } else if(errors === 0){

我正在运行onclick验证函数。当您最初单击按钮时,它会遍历每个字段并确保验证是否正确。它目前只通过控制台告诉我有多少错误,或者是否没有错误

第一次就成功了!但是,当我修复错误并再次单击按钮时,它仍然表示在修复之前存在错误

我的问题是,有没有办法让按钮重新计数或“刷新”?这是我的代码

function moveOn(){
    if (errors > 0) {
        console.log(errors);
    } else if(errors === 0){
        console.log("no errors!");
    }
};
下面是代码的其余部分

var errors = 0;
function validate(){


$(".validName").each(function() {
    var val = $(this).val();
    var minLength = defaultMinNameLength
    //check data-min-length if exists then 
    // min length = thatValue
    if (validateName(val) && validateLength(val,minLength)){
        inlineValidate(this, { '.error': 'hide', '.correct': 'fadeIn', '.incorrect': 'hide' },"#ccc");
    } else {
        errors++;
        inlineValidate(this, { '.error': 'fadeIn', '.correct': 'hide', '.incorrect': 'fadeIn' }, "#ff9999");
    }
});

$(".validLetNum").each(function() {
    var val = $(this).val();
    var minLength = defaultMinNameLength
    if (validateLetterNum(val) && validateLength(val,minLength)){
        inlineValidate(this, { '.error': 'hide', '.correct': 'fadeIn', '.incorrect': 'hide' },"#ccc");
    } else {
        errors++;
        inlineValidate(this, { '.error': 'fadeIn', '.correct': 'hide', '.incorrect': 'fadeIn' }, "#ff9999");
    }
});

$(".validEmail").each(function() {
    var val = $(this).val();
    var minLength = defaultMinNameLength
    if (validateEmail(val) && validateLength(val,minLength)){
        inlineValidate(this, { '.error': 'hide', '.correct': 'fadeIn', '.incorrect': 'hide' },"#ccc");
    } else {
        errors++;
        inlineValidate(this, { '.error': 'fadeIn', '.correct': 'hide', '.incorrect': 'fadeIn' }, "#ff9999");
    }
});
// console.log(errors);
};

function moveOn(){
    if (errors > 0) {
        console.log(errors);
    } else if(errors === 0){
        console.log("no errors!");
    }
};
您可以通过更改以下内容来解决此问题:

var errors = 0;
function validate(){
致:

注意:从您的代码来看,您不太清楚如何调用
moveOn()
(甚至不清楚您如何调用
validate()
),因此我无法自信地确认上述操作是否可以解决您的问题

小心

  • 尽量不要把全局范围弄乱。您希望使用本地化变量。如果您需要在另一个函数中使用类似
    errors
    的变量,请将该变量传递给第二个函数,或者这可能表示您的两个函数应合并为一个函数
  • 将JS代码与HTML分开。与其使用元素的
    onclick
    属性,不如利用jQuery的强大功能,将
    click
    事件绑定到元素

此处信息不足-如何设置
错误
变量?每次更正错误时,您需要重新初始化
错误
。也许当您单击按钮时。在验证fieldsNico的函数中设置errors=0,您介意详细说明吗?谢谢你,谢谢你,约书亚。当我尝试这一点时,它总是说有0个错误。这修复了它!非常感谢。我在htmlGlad中使用onclick属性调用moveOn(),我可以提供帮助。:-)通常,提供相关的HTML代码片段是有帮助的。
var errors = 0;
function validate(){
var errors;
function validate() {
    errors = 0;