2014-11-14 2 views
1

Если добавить «Оранжевый» до «Оранжевый», то есть readonly. input, который будет иметь красную границу, равен input, который доступен только для чтения w/c. Я не хочу, чтобы read-only input (предположительно из базы данных будет пометить как дублировать или иметь красную границу)Отключить изменение цвета границы с заданным классом

Токовый выход:

Apple [read-only] 
Orange // *added by user* 
Orange[read-only] //borderline changed to red when button save is clicked 

Wanted выход:

Apple [read-only] 
Orange // *added by user* and borderline changed to red when button save is clicked 
Orange[read-only] 

Смотреть это FIDDLE for demo и попробуйте нажать кнопку строки строки перед строкой с полем ввода значения «Оранжевый» с другим значением «Оранжевый» ввода.

$("#save").off("click").on("click",function(){ 
    var existing = []; 
    var duplicates = $('#myTable td:nth-child(3) input').filter(function() { 
     var value = $(this).val(); 
     if (existing.indexOf(value) >= 0) { 
      return $(this); 
     } 
     existing.push(value); 
    }); 
    duplicates.closest('tr').css('background-color', 'red'); 
}); 

Я попытался это:

duplicates.closest('#myTable td:nth-child(3) input:not(readOnlyText)').css('background-color', 'red');

но изменить ничего.

+0

Это обязательно произойдет в соответствии с вашим кодом. Вам нужно различать строки, добавленные пользователем из уже существующих. Вы можете добавить класс/атрибут в строки, добавленные пользователем, а затем применить фильтр. –

+0

@VivekKumarBansal Я alreay добавляю класс для ввода только для чтения, но когда я пытаюсь сделать это duplicates.closest ('# myTable td: nth-child (3) input: not (readOnlyText)'). Css ('background-color ',' red '); , без изменений – bumbumpaw

+0

Что вы в основном хотите, так это если в имени есть какое-то дублирующее значение, тогда строки/строки должны быть помечены как дубликаты. –

ответ

1

Это обязательно произойдет в соответствии с вашим кодом. Вам нужно различать строки, добавленные пользователем из уже существующих. Вы можете использовать атрибут readonly для строк, добавленных пользователем, а затем применить свой фильтр.

$("#save").off("click").on("click",function(){ 
    var existing = []; 
    $('#myTable td:nth-child(3) input').filter(function() { 
     var value = $(this).val(); 
     if ($(this).attr('readonly')) { 
      existing.push(value); 
     } 
    }); 
    var duplicates = $('#myTable td:nth-child(3) input').filter(function() { 
     var value = $(this).val(); 
     if (existing.indexOf(value) > -1 && !$(this).attr('readonly')) { 
      return $(this); 
     } 
    }); 
    duplicates.closest('tr').css('background-color', 'red'); 
}); 
+0

Ничего не меняется, см. это с добавленным кодом http://jsfiddle.net/8y54wwuj/5/ – bumbumpaw

+0

Когда я нажимаю «Добавить строку» в первой строке и набираю «Оранжевый» во второй и нажимаю «Сохранить». Вторая строка выделена. Разве ты этого не хотел? –

+0

Извините, в этом случае ваш код работает нормально, но если я попытаюсь добавить две последовательные строки с такими же значениями «Берри», например, я хочу также обнаружить, что последняя часть дублируется, или если он вводит трех последователей «Ягоды», я хочу, чтобы вторая и третья имели красную границу. – bumbumpaw

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