Можно ли сделать обрезку в селекторе? - PullRequest
3 голосов
/ 24 ноября 2010

Я хотел бы сосчитать все входные данные в моей форме, которые являются пустыми.Под пустым я подразумеваю, что его значение является пустым после обрезки его значения (если пользователь вставляет пробелы, также его пустое).Этот jquery подсчитывает их, но не включает обрезку:

$(':text').filter('[value=""]').length

Есть что-то, что можно использовать для обрезки в селекторе?

спасибо

Ответы [ 2 ]

11 голосов
/ 24 ноября 2010
$(':text').filter(function () {
    return $.trim($(this).val()).length === 0;
});
9 голосов
/ 24 ноября 2010

Хотя метод .filter() в ответе @ Domenic - хороший подход, я бы реализовал его немного по-другому.

Пример: http://jsfiddle.net/patrick_dw/mjuyk/

$('input:text').filter(function () {
    return !$.trim(this.value);
});
  • Вы должны указать input:text. В противном случае jQuery должен наблюдать каждый элемент в DOM, чтобы определить, является ли он type='text'. ( См. Документы. )
  • Поскольку это текстовые вводы, использовать this.value быстрее, чем $(this).val().
  • Нет необходимости получать свойство length, так как пустая строка - false. Так что просто используйте оператор !.

Или вы можете использовать обратную .filter(), то есть метод .not() :

Пример: http://jsfiddle.net/patrick_dw/mjuyk/1/

$('input:text').not(function () {
    return $.trim(this.value);
});

Кроме того, вы можете создать собственный селектор, например:

Пример: http://jsfiddle.net/patrick_dw/mjuyk/2/

$.extend($.expr[':'], {
   novalue: function(elem, i, attr){
      return !$.trim(elem.value);
   }
});

$('input:text:novalue')
...