Javascript 加载页面时,jQuery自动运行更改事件函数

Javascript 加载页面时,jQuery自动运行更改事件函数,javascript,jquery,validation,jquery-validate,jquery-events,Javascript,Jquery,Validation,Jquery Validate,Jquery Events,我制作了一个函数,用于验证不同类型字符串的输入。我在一些事情上有严重的问题。我在表单submit中调用它,并对上的每个输入进行更改。我已经写了下面的代码,然后是函数的调用。问题是:当我在更改时调用它并刷新页面时,它会在页面加载时自动运行更改验证并呈现错误 var Val = { 'string': function(ident, req, regexp, offset, limit) { var ele = $(document.getElementById(ident)

我制作了一个函数,用于验证不同类型字符串的输入。我在一些事情上有严重的问题。我在表单submit中调用它,并对上的每个输入进行更改。我已经写了下面的代码,然后是函数的调用。问题是:当我在更改时调用它并刷新页面时,它会在页面加载时自动运行更改验证并呈现错误

var Val = {
    'string': function(ident, req, regexp, offset, limit) {
        var ele = $(document.getElementById(ident));
        Val.errors = false;

        if (!ele.val() && req == 1) {
            alert('blank');
            Val.errors = true;
            $("#" + ident + "Error").html("This field cannot be empty.");
            $("#" + ident + "Error").show("fast");
        }else if ((ele.val().length <= offset || ele.val().length > limit) && Val.errors == false) {
            alert('not long enough');
            Val.errors = true;
            $("#" + ident + "Error").html("This field must be between " + offset + " & " + limit + " charecters long");
            $("#" + ident + "Error").show("fast");
        }else if (regexp !== null) {
        switch (regexp) {
            case 'text':
                var regEx = /^([a-zA-Z]+)$/g;
                break;
            case 'number':
                var regEx = /^([0-9]+)$/g;
                break;
            case 'email':
                var regEx = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/g;
                break;
            case 'date':
                var regEx = /^([123]0|[012][1-9]|31)-(0[1-9]|1[012])-(19[0-9]{2}|2[0-9]{3})$/g;
                break;
            case 'alphanum':
                var regEx = /^([a-zA-Z0-9_\-\.]+)$/g;
                break;
            default:
                break;
        }
            if (!regEx.test(ele.val()) && Val.errors == false) {
                alert('not valid');
                Val.errors = true;
                $("#" + ident + "Error").html("This field is not valid");
                $("#" + ident + "Error").show("fast");
            }
        }
        if (!Val.errors){
            $("#" + ident + "Error").hide("fast");
        }
    },

    'send': function() {
        if (!Val.errors) {
            $('#form').submit();
        }
    }
}
var-Val={
“string”:函数(ident、req、regexp、offset、limit){
var ele=$(document.getElementById(ident));
Val.errors=false;
如果(!ele.val()&&req==1){
警报(“空白”);
Val.errors=true;
$(“#”+ident+“Error”).html(“此字段不能为空。”);
$(“#”+ident+“Error”).show(“fast”);
}else if((ele.val().length limit)和&val.errors==false){
警惕(“不够长”);
Val.errors=true;
$(“#”+ident+“Error”).html(“此字段必须介于“+offset+”和“+limit+”字符长度之间”);
$(“#”+ident+“Error”).show(“fast”);
}else if(regexp!==null){
开关(regexp){
案例“文本”:
var regEx=/^([a-zA-Z]+)$/g;
打破
案件编号:
var regEx=/^([0-9]+)$/g;
打破
“电子邮件”案例:
var regEx=/^([A-Za-z0-9\-\.])+\@([A-Za-z0-9\-\.])+\.([A-Za-z]{2,4})$/g;
打破
案例“日期”:
var regEx=/^([123]0 |[012][1-9]| 31)-(0[1-9]|1[012])-(19[0-9]{2}{2[0-9]{3}$/g;
打破
“alphanum”案例:
var regEx=/^([a-zA-Z0-9\-\.]+)$/g;
打破
违约:
打破
}
如果(!regEx.test(ele.val())&&val.errors==false){
警报(“无效”);
Val.errors=true;
$(“#”+ident+“Error”).html(“此字段无效”);
$(“#”+ident+“Error”).show(“fast”);
}
}
如果(!Val.errors){
$(“#”+ident+“Error”).hide(“fast”);
}
},
“发送”:函数(){
如果(!Val.errors){
$('表格').submit();
}
}
}
调用函数:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Form Validations</title>
<script type="text/javascript" language="JavaScript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript" language="JavaScript" src="js/gcui.lsat.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $('#send').click(function(){
        checkEmail();
        checkUsername();
        Val.send(); 
    });

    $('#emailID').change(checkEmail());
    $('#username').change(checkUsername());


    function checkEmail(){
        Val.string('email', 1, 'username', 10, 100);
    }
    function checkUsername(){
        Val.string('username', 1, 'alphanum', 5, 15);
    }
});
</script>
</head>
<body>
    <form id="form" action="">
        <input type="text" id="email" name="email" title="Email" />
        <input type="text" id="username" name="username" title="Username" />
        <input type="button" id="send" value="Submit" />
    </form>

    Email: <div id="emailError"></div><br/>
    Username: <div id="usernameError"></div>
</body>
</html>

表单验证
$(文档).ready(函数(){
$(“#发送”)。单击(函数(){
检查电子邮件();
checkUsername();
Val.send();
});
$('#emailID')。更改(checkEmail());
$('#username')。更改(checkUsername());
函数checkEmail(){
Val.string('email',1',username',10100);
}
函数checkUsername(){
Val.string('username',1',alphanum',5,15);
}
});
电子邮件:
用户名:
表示“运行
checkEmail
并将返回值传递给
change
方法”

你想要:

    $('#emailID').change(checkEmail);
意思是“将
checkEmail
功能传递给
change
方法”

表示“运行
checkEmail
并将返回值传递给
change
方法”

你想要:

    $('#emailID').change(checkEmail);

意思是“将
checkEmail
函数传递给$(“#send”)中的
change
方法“

。单击(函数(){
提交两次。第一次进行验证,第二次按下按钮。添加行返回False;就在Val.send()之后;只有在您的$(“#发送”)中填写了正确的表单时,您才可以提交论坛。单击(函数(){您会提交两次。第一次是在验证时,第二次是在按下按钮时。在Val.send()之后添加行返回False;;并且只有在表单填写正确的情况下,您才能提交论坛。

函数名后的括号将调用函数。在这里,您只需要将函数作为参数传递给更改方法。编辑:抱歉,我想对原始问题发表评论。函数名后的括号将调用函数。这里您可以我只需要将函数作为参数传递给change方法。edit:抱歉,我想对原始问题发表评论