У меня есть вход, который я хочу проверить:
<input type="text" id="input" />
И здесь JS:
jQuery("#input").live('change', function() {
if("#input:not(:empty)") {
alert('not empty');
}
else if("#input:empty") {
alert('empty');
}
});
Даже когда "#input" пуст, нет способа отображения предупреждения с "пустым" сообщением. Итак, в основном, независимо от того, что я делаю, только первое утверждение истинно, а второе - false, всегда.
Что не так?
JQuery: пустой селектор выбирает все элементы на пустой странице в том смысле, что они не имеют дочерних элементов, включая текстовые узлы, а не все входы, в которых нет текста.
JQuery: как проверить, не был ли заполнен элемент ввода.
Здесь код, украденный из приведенного выше потока:
$('#apply-form input').blur(function() //whenever you click off an input element
{
if( !$(this).val() ) { //if it is blank.
alert('empty');
}
});
Это работает, потому что пустая строка в JavaScript является "фальшивым значением", что в основном означает, что если вы попытаетесь использовать ее как логическое значение, она всегда будет оцениваться как false
. Если вы хотите, вы можете изменить условное выражение на $(this).val() === ''
для большей ясности.: D
Вы можете сделать это
$("#input").blur(function(){
if($(this).val() == ''){
alert('empty');
}
});
http://jsfiddle.net/jasongennaro/Y5P9k/1/
Когда вход потерял focus
, то есть .blur()
, проверьте значение #input
.
Если он пуст == ''
, активируйте оповещение.
На самом деле есть более простой способ сделать это, просто:
if ($("#input").is('empty')) {
console.log('empty');
} else {
console.log('not empty');
}
jQuery("#input").live('change', function() {
// since we check more than once against the value, place it in a var.
var inputvalue = $("#input").attr("value");
// if it value **IS NOT** ""
if(inputvalue !== "") {
jQuery(this).css('outline', 'solid 1px red');
}
// else if it value **IS** ""
else if(inputvalue === "") {
alert('empty');
}
});