Выделите входные данные, которые имеют одинаковое непустое значение

#javascript #jquery

#javascript #jquery

Вопрос:

Я хочу проверить, имеет ли текстовое поле одинаковое значение. Если они имеют одинаковое значение, выделите их, за исключением текстовых полей, которые не имеют значения.

Вот пример скрипки: http://jsfiddle.net/qjqa1et2/61 /

Вот мой текущий код jQuery:

 var inputs = $('input');

inputs.filter(function(i,el){
return inputs.not(this).filter(function() {
    return this.value === el.value;
}).length !== 0;
}).addClass('red');
  

Проблема в том, что текстовые поля, у которых нет значений, по-прежнему выделяются.

Комментарии:

1. return this.value amp;amp; this.value === el.value;

2. @A.Wolff спасибо.. вы очень помогли … =)

3.ИМХО лучшим решением было бы return this.value amp;amp; inputs.not(this).filter(function() { jsfiddle.net/f4582bz5

Ответ №1:

вы могли бы сделать это:

     return inputs.not(this).filter(function() {
        return (this.value amp;amp; (this.value === el.value));
    }).length !== 0;
  

Скрипка:
http://jsfiddle.net/maverickosama92/qjqa1et2/62 /

Ответ №2:

Вы можете проверить, является ли элемент непустым с помощью !el.value (эквивалент el.value == '' в данном случае). Если это так, мы можем немедленно исключить это (без проверки других элементов), вернув false .

 var inputs = $('input');

inputs.filter(function(i,el){
    if (!el.value) return false; // <= new line
    return inputs.not(this).filter(function() {
        return this.value === el.value;
    }).length !== 0;
}).addClass('red');
  

Вот скрипка.

Ответ №3:

 var inputs = $('input'); 

inputs.filter(function(i,el) {
    if(el.value!="") {
        return inputs.not(this).filter(function() { 
            return this.value === el.value;
        }).length !== 0;
     } 
}).addClass('red');
  

Комментарии:

1. При ответе также добавьте некоторые детали .. объяснение кода требуется для понимания других…