#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;
Ответ №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. При ответе также добавьте некоторые детали .. объяснение кода требуется для понимания других…