Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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_Html_Validation - Fatal编程技术网

Javascript 选中我的复选框后如何验证我的表单字段?

Javascript 选中我的复选框后如何验证我的表单字段?,javascript,jquery,html,validation,Javascript,Jquery,Html,Validation,我已经用动态创建的字段创建了一个表单。我有一个唯一ID的复选框。当用户单击该复选框时,只有这两个字段是可见的名称和年龄。单击后,只需验证年龄字段 这是我的密码: $(document).ready(function() { $('#person').click(function() { function formValidator(){ var age = document.getElementsByName('age[]');

我已经用动态创建的字段创建了一个表单。我有一个唯一ID的复选框。当用户单击该复选框时,只有这两个字段是可见的名称和年龄。单击后,只需验证年龄字段

这是我的密码:

$(document).ready(function() {
    $('#person').click(function() {
        function formValidator(){
            var age = document.getElementsByName('age[]');
            for (var i = 0; i< age.length; i++) {
                if(!isNumeric(age[i], "Please enter a valid Age")){
                    return false;
                }
            }
            return true;
        }

        function isNumeric(elem, helperMsg){
            var numericExpression = /^[0-9]+$/;
            if(elem.value.match(numericExpression)){
                return true;
            } else {
                alert(helperMsg);
                elem.focus();
                return false;
            }
        }
   });
});

$(document).ready(function() {
    $('#person').click(function() {
        $('#name').attr('required','required');
        $('#age').attr('required','required');
    });
});
Html代码是:

有随行人员吗 对 人员详细信息

名称 年龄

选择您的付款选项 VISA/MASTER卡: 支票/即期汇票 内夫特
问题:通过单击复选框“任何随行人员?:”成功验证表单字段年龄。问题是,当用户尝试提交表单时,没有单击该复选框,然后全部提交,所以它要求验证。你是怎么得到这个称呼的?请帮助

验证程序位于单击处理程序中,该处理程序应位于文档的底部。就绪

此外,如果您只想验证何时单击该复选框,您可以在javascript中选中它,并通过复选框的名称选择它(如果每次都有唯一的ID)

function formValidator(){
    var age = document.getElementsByName('age[]');
    if($("input[name = 'chk[]']").prop('checked')){
        for (var i = 0; i< age.length; i++) {
            if(!isNumeric(age[i], "Please enter a valid Age")){
                return false;
            }
        }
    }
    return true;
}

将所有javascript函数带到click事件之外。试试这个formValidator函数

函数formValidator{ if$person.is:已选中{ var age=document.getElementsByName'age[]; 对于变量i=0;i如果您修复代码缩进,这将有所帮助。您正试图从提交处理程序将formValidator作为全局调用,但它是在传递给$'person'的函数中声明的。请单击以使其不可访问。那么称呼是什么?您可以将$input[name='chk[]].prop'checked'替换为age.form['chk[]'。checked。您每天都会学到一些新东西:。这要简单得多。我的必填字段呢。这都有相同的问题。如何解决?名称和年龄输入?如果您还需要它们,您可以检查它们在formValidator中是否有值。如果它们有唯一的ID,除了name='name[]和name='age[],您可以使用相同的css选择器,然后执行If$输入[name='name[]'].val{return false;}