2014-10-08 3 views
0

내 웹 페이지에 동적 인 Textboxes이 약 50 Textboxes입니다.유효성 검사를 위해 모든 텍스트 상자를 반복하는 방법

사용자는 Textboxes에 주문 번호를 설정할 수 있습니다. 나는 오직 3 개의 주문 번호 만 & 중복 항목을 설정할 수 있도록해야합니다. 따라서 사용자는 전체 텍스트 상자에 1, 2 & 3을 입력 할 수 있습니다. 그가 어딘가에 4에 들어가면, 그는 실수를해야합니다. 텍스트 상자의 나머지 부분은 기본값으로 0입니다.

값이 4보다 크지 않은지 확인하기 위해 모든 텍스트 상자를 반복하는 방법 & 중복 항목이 없음 & 텍스트 상자가 비어 있지 않습니까?

답변

1

나는이 일을 더 우아한 방법이 확신 해요,하지만 여기에 "정직"방법이있다 :

function validateTextBoxes() { 
    var values = []; 
    var isError = false; 
    var atLeastOneFilled = false; 

    $('input[type=text]').each(function (idx, elem) { 
     var val = $(elem).val(); 

     if (isNaN(val)) { 
      isError = true; // input is not a number 
     } else // a number 
     { 
      var intVal = Number(val); 
      if (!isInt(intVal)) { 
       isError = true; // not an interger 
      } else { 
       if (intVal !== 0) // default 
       { 
        atLeastOneFilled = true; 

        if (intVal > 3 || intVal < 0) { 
         isError = true; // not in range 
        } else if (values.indexOf(intVal) > -1) { 
         isError = true; // duplicate 
        } else { 
         values.push(intVal); 
        } 
       } 
      } 
     } 
    }); 

    return atLeastOneFilled && !isError; 
} 

function isInt(n) { 
    return n % 1 === 0; 
} 

JSFIDDLE.

+0

나는 코드를 시도했다 .... 내가 디버깅 할 때 foreach 루프에 들어 가지 않는다. 왜 그것이 foreach 안에 가지 않을까요? – Anup

+0

JSfiddle이 작동하고 "each"메소드를 입력합니다. 다른 코드에 대해 이야기하고 있다면 여기에 그것을 표시하고 그것을위한 바이올린을 만드십시오. –

+0

이'function (index, element)'처럼 쓰면 ... – Anup

관련 문제