#jquery
#jquery
Вопрос:
Я пытаюсь понять, как что-то сделать, если определенное текстовое поле не является пустым (т. Е. содержит что-то, может быть что угодно)
Это мой код (который, похоже, не работает)
if ( !($('#edit-sPostalCode').attr('val','')) ) {
stuff here
}
Что я пропустил?
Комментарии:
1. Нет HTML-элемента, у которого есть
val
атрибут. Я думаю, вы имеете в виду метод jQuery.val()
.
Ответ №1:
if ( $('#edit-sPostalCode').val() != '' ) {
stuff here
}
$('#edit-sPostalCode').attr('val','')
фактически создаст атрибут поля ввода со значением ''
, а затем вернет объект jQuery.
Произнесение !($('#edit-sPostalCode').attr('val',''))
приведет к аннулированию этого объекта jQuery. Поскольку экземпляр объекта в JS является истинным, результатом этого выражения всегда будет false
.
Комментарии:
1. Это не установит значение, это добавит новый атрибут с именем
val
. Но, кроме этого, вы правы.
Ответ №2:
Вам известен .val
метод?
if ( $('#edit-sPostalCode').val() !== '' ) {
Хотя вам следовало бы $.trim
указать значение, если вы считаете, что пробелы вообще ничему не эквивалентны:
if ( $.trim( $('#edit-sPostalCode').val() ) !== '' ) {
Комментарии:
1. является ли !== оператором javascript? Я знаю, что === это
2. Просто погуглил это там — это лучшее для этого сравнения?
3. @NicholasMurray Возможно, это не имеет значения, но лучше перестраховаться. Например, в JavaScript
false=='0'
имеет значение true.false==''
также верно, хотя''=='0'
и равно false.4. @FelixKling — круто, я изменил свой ответ, чтобы вместо этого использовать === .
Ответ №3:
if ( !($('#edit-sPostalCode').val() === '') ) {
stuff here
}