Check If Passwords Are Equal Jquery
Solution 1:
You should be using .val()
to get the value of the textbox
You could simplify the whole thing to this:
$('input').blur(function() {
var pass = $('input[name=password]').val();
var repass = $('input[name=repassword]').val();
if(($('input[name=password]').val().length == 0) || ($('input[name=repassword]').val().length == 0)){
$('#password').addClass('has-error');
}
elseif (pass != repass) {
$('#password').addClass('has-error');
$('#repassword').addClass('has-error');
}
else {
$('#password').removeClass().addClass('has-success');
$('#repassword').removeClass().addClass('has-success');
}
});
You could use $('input').blur(function()
instead, that way it will trigger on all inputs
Solution 2:
You're never removing any of the classes, you have to remove them to make it work, otherwise css specificity will only show the styles for the most specific class
It could all be written much simpler
$('input[name=password], input[name=repassword]').on('change', function () {
var password = $('input[name=password]'),
repassword = $('input[name=repassword]'),
both = password.add(repassword).removeClass('has-success has-error');
password.addClass(
password.val().length > 0 ? 'has-success' : 'has-error'
);
repassword.addClass(
password.val().length > 0 ? 'has-success' : 'has-error'
);
if (password.val() != repassword.val()) {
both.addClass('has-error');
}
});
Solution 3:
Use domElem.value
or $(domElem).val()
to get the value of a form
element:
$('input').on('input',function() {
var pass = $('input[name=password]'),
reps = $('input[name=repassword]'),
pass_cont = $('#password'),
reps_cont = $('#repassword');
!$(this).is( '[name=password]' ) || $(function() {
pass_cont.addClass( pass.val().length === 0 ? 'has-error' : 'has-success' )
.removeClass( pass.val().length === 0 ? 'has-success' : 'has-error' );
})();
!$(this).is( '[name=repassword]' ) || $(function() {
reps_cont.addClass( reps.val() === pass.val() ? 'has-success' : 'has-error' )
.removeClass( reps.val() === pass.val() ? 'has-error' : 'has-success' );
})();
});
Solution 4:
It should be $(this).val()
, not $(this).attr('value')
. And check both fields when either is blurred:
$('input').blur(function () {
if ($('input[name=password]').val() != $('input[name=repassword]').val()) {
$('#password').removeClass().addClass('has-error');
$('#repassword').removeClass().addClass('has-error');
} else {
$('#password').removeClass().addClass('has-success');
$('#repassword').removeClass().addClass('has-success');
}
});
Solution 5:
In addition to what the others have said about using val()
to get the value of the element instead of attr('val')
(which could be derived from the HTML), the example also didn't work because:
- You need to remove the
has-error
andhas-success
class before adding one or the other - You are checking the value of the second password field
onblur
of the first one. It seems like you should compare the two in one event handler as in adeneo's answer.
Post a Comment for "Check If Passwords Are Equal Jquery"