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 返回';正确';验证后功能_Javascript_Jquery_Function_Validation - Fatal编程技术网

Javascript 返回';正确';验证后功能

Javascript 返回';正确';验证后功能,javascript,jquery,function,validation,Javascript,Jquery,Function,Validation,在继续之前,我正在尝试验证某些字段是否有有效的输入。在提交表单之前,我只想验证几个字段。验证工作正常,并在必要时显示错误。但当所有字段都有效时,它似乎不会返回调用函数继续 function validateTableRow() { $('input[name="addPid"]').valid(); $('input[name="addName"]').valid(); $('input[name="addAddress"]').valid(); $('input

在继续之前,我正在尝试验证某些字段是否有有效的输入。在提交表单之前,我只想验证几个字段。验证工作正常,并在必要时显示错误。但当所有字段都有效时,它似乎不会返回调用函数继续

function validateTableRow() {
    $('input[name="addPid"]').valid();
    $('input[name="addName"]').valid();
    $('input[name="addAddress"]').valid();
    $('input[name="addCity"]').valid();
    $('select[name="addState"]').valid();
    $('input[name="addZip"]').valid();
}

$('.button').click(function () {
    if(validateTableRow()){
        //Do something
    }
});
}

您没有从您的方法返回任何内容

使其生效(假设
valid
方法返回布尔值)


您没有从您的方法返回任何内容

使其生效(假设
valid
方法返回布尔值)


您的函数
validateTableRow()
必须返回
true
,才能执行
//执行某些操作。但是没有向JS返回任何内容,这是
false
,因此无论您在
if
中输入什么,都不会执行

根据需要,您可以将函数更改为返回
true
false

function validateTableRow() {
  return  $('input[name="addPid"]').valid() &&
    $('input[name="addName"]').valid() &&
    $('input[name="addAddress"]').valid() &&
    $('input[name="addCity"]').valid() &&
    $('select[name="addState"]').valid() &&
    $('input[name="addZip"]').valid();
}

$('.button').click(function () {
    if(validateTableRow()){
    //Do something
    }
});
}
[编辑] 要在返回
true
false
之前检查它们,可以如下所示:

function validateTableRow() {

    $('input[name="addPid"]').valid();
    $('input[name="addName"]').valid();
    $('input[name="addAddress"]').valid();
    $('input[name="addCity"]').valid();
    $('select[name="addState"]').valid();
    $('input[name="addZip"]').valid();

    return  $('input[name="addPid"]').valid() &&
        $('input[name="addName"]').valid() &&
        $('input[name="addAddress"]').valid() &&
        $('input[name="addCity"]').valid() &&
        $('select[name="addState"]').valid() &&
        $('input[name="addZip"]').valid();
    }

    $('.button').click(function () {
        if(validateTableRow()){
        //Do something
        }
    });
    }

您的函数
validateTableRow()
必须返回
true
,才能执行
//执行某些操作。但是没有向JS返回任何内容,这是
false
,因此无论您在
if
中输入什么,都不会执行

根据需要,您可以将函数更改为返回
true
false

function validateTableRow() {
  return  $('input[name="addPid"]').valid() &&
    $('input[name="addName"]').valid() &&
    $('input[name="addAddress"]').valid() &&
    $('input[name="addCity"]').valid() &&
    $('select[name="addState"]').valid() &&
    $('input[name="addZip"]').valid();
}

$('.button').click(function () {
    if(validateTableRow()){
    //Do something
    }
});
}
[编辑] 要在返回
true
false
之前检查它们,可以如下所示:

function validateTableRow() {

    $('input[name="addPid"]').valid();
    $('input[name="addName"]').valid();
    $('input[name="addAddress"]').valid();
    $('input[name="addCity"]').valid();
    $('select[name="addState"]').valid();
    $('input[name="addZip"]').valid();

    return  $('input[name="addPid"]').valid() &&
        $('input[name="addName"]').valid() &&
        $('input[name="addAddress"]').valid() &&
        $('input[name="addCity"]').valid() &&
        $('select[name="addState"]').valid() &&
        $('input[name="addZip"]').valid();
    }

    $('.button').click(function () {
        if(validateTableRow()){
        //Do something
        }
    });
    }

因为你不
返回
任何东西…因为你不
返回
任何东西…这种方法很有效。单击空白表单时,只有第一个字段显示错误消息。如果我填写该字段,然后单击,则第二个空白字段显示错误。一直到所有字段都有效,然后返回true并继续。但是只返回一个验证错误的行为似乎很奇怪?是的,正确,当某个内容为false时,运算符&&返回false,但不“读取”下一个内容。我将解释,如果您有statement1&&statement2,并且statement1为false,那么它不会执行statement2。因为整个陈述无论如何都是假的。节省时间。因此,如果第一个返回无效,它不会检查下一个是否有效。谢谢您的解释。在返回true或false之前,是否有办法检查所有6个输入?您可以将所有检查放在return语句之前,这有点脏,但应该可以工作。我会编辑答案。谢谢@Pablo Viñals,效果很好。我感谢你的帮助!这有点管用。单击空白表单时,只有第一个字段显示错误消息。如果我填写该字段,然后单击,则第二个空白字段显示错误。一直到所有字段都有效,然后返回true并继续。但是只返回一个验证错误的行为似乎很奇怪?是的,正确,当某个内容为false时,运算符&&返回false,但不“读取”下一个内容。我将解释,如果您有statement1&&statement2,并且statement1为false,那么它不会执行statement2。因为整个陈述无论如何都是假的。节省时间。因此,如果第一个返回无效,它不会检查下一个是否有效。谢谢您的解释。在返回true或false之前,是否有办法检查所有6个输入?您可以将所有检查放在return语句之前,这有点脏,但应该可以工作。我会编辑答案。谢谢@Pablo Viñals,效果很好。我感谢你的帮助!