Проверка значения на уникальность

390
26 февраля 2017, 10:07

Здравствуйте. Пишу CustomValidator. Написал функцию, которая должна проверять, что значение в заданном TextBox не должно совпадать с другими TextBox. Она работает некорректно. В чем может быть проблема?

function IsUnique1(source, args) {
  if (args.Value == "") {
    args.IsValid = false;
  } else {
    if (
      !args.Value.Equals(OrangeBox.Text) && 
      !args.Value.Equals(RedBox.Text) && 
      !args.Value.Equals(WhiteBox.Text) && 
      !args.Value.Equals(GreenBox.Text) 
    ) {
      args.IsValid = true;
    } else {
      args.IsValid = false;
    }
  }
}
Answer 1

Я бы написал валидатор так: задал бы объект со значениями полей arrBox = [...]. А потом бы передавал этот массив и значение которое надо провалидировать.

var arrBox = [ 
 {id:'OrangeBox', value: 1}, 
 {id:'RedBox', value: 2}, 
 {id:'WhiteBox', value: 3}, 
  {id:'GreenBox', value: 4} 
]; 
 
var value = 5; 
 
 
function isUnique(arr, val) { 
   return !arr.find(function (item) { 
        return item.value == val; 
   }); 
} 
 
var r = isUnique(arrBox, value); 
console.log(r)

А у вас получается избыточный код, который попробуй ещё поддержи. Потом добавиться, какой то BlackBox, потому будет аналогичная форма, но не будет RedBox, например, и надо буде писать новую функцию IsUnique2.

READ ALSO
странности с Yandex api

странности с Yandex api

Всем привет! Столкнулся с очень странной вещьюПишу на asp

282
преобразовать теги в текст jquery

преобразовать теги в текст jquery

есть проблеманеобходимо через jq преобразовать теги в простой текст

376
Локальные DB для Google Extensions

Локальные DB для Google Extensions

Какие есть локальные DB (на стороне клиента), которые можно использовать с помощью Google ExtensionsИ да, важно что бы был полнотекстовый поиск

325