Выделение всех пустых текстовых полей в Jquery - PullRequest
7 голосов
/ 11 марта 2009

Как найти все текстовые поля с пустым значением?

$(":text[value='']")  

выдает ошибку JavaScript

Я знаю, что могу сделать $(":text"), перебрать и вернуть все поля с $(this).val()==''

Я ищу более чистый метод и использую JQuery 1.3.1. Это должно работать, если элемент изначально имел значение при загрузке страницы, а затем пользователь очистил его. ($("#elem").attr('value') дает исходное значение в этом месте, хотя .val () работает правильно)

Ответы [ 6 ]

11 голосов
/ 11 марта 2009

Последний ответ: обновление до 1.3.2

Вот различные тесты, которые я запускал через FireBug на http://docs.jquery.com/Downloading_jQuery

Различные версии jQuery включаются при загрузке страницы с помощью специальных сценариев greasemonkey.

>>> jQuery.prototype.jquery
"1.3.2"
>>> jQuery(":text[value='']")
[input#jq-primarySearch]
Unknown pseudo-class or pseudo-element 'text'.
>>> jQuery(":text[value=]").get()
[input#jq-primarySearch]

>>> jQuery.prototype.jquery
"1.3.1"
>>> jQuery(":text[value='']")
Syntax error, unrecognized expression: value='']
>>> jQuery(":text[value=]").get()
[input#jq-primarySearch]

>>> jQuery.prototype.jquery
"1.3"
>>> jQuery(":text[value='']");
Object length=1 prevObject=Object context=document
Unknown pseudo-class or pseudo-element 'text'.
[Break on this error] undefined
>>> jQuery(":text[value=]").get()
[input#jq-primarySearch]

Обратите внимание, что 1.3 и 1.3.2 обрабатывают это должным образом (хотя Firefox отправляет ошибку), но они все еще получают правильный узел.

В качестве альтернативы : вы можете использовать нотацию :text[value=], которая работает везде, где я пробовал. Просто немного подозреваю, вот и все.

(Не обращайте внимания на мои предыдущие разглагольствования, все они чушь, не очень хороший день -_-)

4 голосов
/ 12 марта 2009

Я только что попробовал это и отлично работал для меня:

$(":text[value=]")

Я только что удалил одинарные кавычки в селекторе.

2 голосов
/ 11 марта 2009

Мне кажется, это работает

$(":text:not([value])")
2 голосов
/ 11 марта 2009

Вы были близки. В селекторах jQuery нет присваивания, поэтому вам нужен только один '=':

$(":text[value='']")
1 голос
/ 26 сентября 2012

Следующий код делает это:

  1. Поиск в форме для ввода полей и текстовых полей
  2. Проверяет, является ли текстовое значение пустым или нет
  3. дает текстовому полю / текстовой области черный фоновый цвет, чтобы доказать это работает

    $('form').find("input[type=text], input[type=password], textarea").each(function(ev)
    {
    
    if(!$(this).val())
    {
       $(this).css("background-color","black");
    }
    
    });
    
0 голосов
/ 11 марта 2009

Снято в темноте, я не проверял, но работает ли он:

$(":text:empty")
...