jquery, если ввод текста * не * равен пробелу

#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
}