2016-10-21 3 views
0

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

Вот пример скрипку: 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'); 

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

+0

'вернуть this.value && this.value === el.value;' –

+0

@ A.Wolff спасибо .. вы большую помощь ... =) –

+1

ИМХО лучшее решение будет be 'return this.value && inputs.not (this) .filter (function() {' http://jsfiddle.net/f4582bz5/ – Satpal

ответ

0

Вы можете проверить, если элемент не является пустым с !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'); 

Here's a fiddle.

0
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'); 

+0

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

Смежные вопросы