简体   繁体   English

当我在输入字段之外单击时,blur()不会触发

[英]blur() is not triggering when I click outside the input field

I'm trying to to create a jQuery validation, so far I have managed to addClass('has-error') to div.form-control. 我正在尝试创建jQuery验证,到目前为止,我已经设法将class('has-error')添加到div.form-control。 I'm trying to remove that class when I press TAB or click out of the input field, but my code isn't working. 当我按TAB或在输入字段中单击时,我试图删除该类,但是我的代码无法正常工作。

HTML code HTML代码

<form class="form-horizontal" onsubmit='return false;' id="useradd">

<input type="hidden" id="token" name="_token" value="{{csrf_token()}}">
<div class="form-group">
    <label class="col-sm-2 control-label">Name</label>

    <div class="col-sm-8">
        <input type="text" class="form-control" value="" name="username" id="username" required>
    </div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group" id="useremail-div">
    <label class="col-sm-2 control-label" id="email-label">Email</label>
    <div class="col-sm-8">
        <input type="text" class="form-control" value="" name="useremail" id="useremail">
    </div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
    <label class="col-sm-2 control-label">Password</label>

    <div class="col-sm-8">
        <input type="password" class="form-control" value="" name="password" id="password" required>
    </div>
</div>

JS code JS代码

 if ($("#username").val() == "" || $("#username").val().length < 3) {
            $("#username").addClass('error');
            return false;
        } else {
            name = $("#username").val();
            $("#username").removeClass('error');
        }
        if ($("#useremail").val() == "" || $("#useremail").val().length < 3 || !emailpatt.test($("#useremail").val())) {
            $("#useremail-div").addClass('has-error');
            $('#email-label').text('Incorrect Email Address');
            return false;
        } else {

            $("#useremail").blur(function() {
                console.log('out');
            });


        }

I've tried focusout() and focusleave(), nothing worked. 我尝试了focusout()和focusleave(),没有任何效果。

You have to put that blur triger outside of the if else like this : 您必须将模糊触发器设置在if之外,例如:

    $(document).ready(function(){
    $("#username").blur(function() {
        if ($("#username").val() == "" || $("#username").val().length < 3) {
            $("#username").addClass('error');
        } else {
            name = $("#username").val();
            $("#username").removeClass('error');
        }
    });        

    $("#useremail").blur(function() {
        if ($("#useremail").val() == "" || $("#useremail").val().length < 3 || !emailpatt.test($("#useremail").val())) {
            $("#useremail-div").addClass('has-error');
            $('#email-label').text('Incorrect Email Address');
        } else {
            $("#useremail-div").removeClass('has-error');
            $('#email-label').text('Email Address');
        }
    });
});

also you cant use return false in if else statements. 您也不能在if else语句中使用return false Return is used in functions. Return用于函数中。 And im not aware if that emailpatt is somewhere else defined. 我不知道该emailpatt是否在其他地方定义。 If not, just delete it and let the if look like this : 如果不是,则将其删除,然后让if如下所示:

if ($("#useremail").val() == "" || $("#useremail").val().length < 3)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM