[英]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.