2014-03-04 2 views
0

현재 동적으로 변경되는 양식이 있습니다. 모든 텍스트 입력을 사용하고 있지만 모두 숫자 만 받아 들여야합니다.입력 유형에 대한 Jquery 양식 유효성 검사

$("#result-form").validate({ 
      rules: { 
       .text: { 
       required: true, 
       digits: true 
       } 
      }, 
      messages: { 
       .text:{ 
       required: " Please enter a score!", 
       digits: " Please only enter numbers!" 
       } 
      }, 
      submitHandler: function(form) { 
       form.submit(); 
      } 
     }); 

현재 위 내용을 사용하여 유효성을 검사하려고 시도하지만 작동하지 않습니다. 어떤 아이디어?

+0

요소를 동적으로 만드는 코드를 보여줍니다. – Sparky

답변

2

읽으십시오.


동적 폼 요소를 만드는 경우 규칙은 변경하거나 the .rules('add') method를 사용하여 적용 할 수 있습니다. 이후에 즉시이 요소를 이라고 부르면 원하는 모든 jQuery 선택기를 사용하여 대상을 지정할 수 있습니다.

이 코드는 이러한 규칙을 페이지의 모든 type="text" 필드에 동적으로 적용합니다.

$("#result-form").validate({ // initialize plugin 
    // other rules and options 
}); 

$('input[type="text"]').each(function() { 
    $(this).rules('add', { 
     required: true, 
     digits: true, 
     messages: { 
      required: " Please enter a score!", 
      digits: " Please only enter numbers!" 
     } 
    }); 
}); 

작업 DEMO : http://jsfiddle.net/2U68C/

참고 :

  • 당신 해야.rules() JQuery와 .each에서/경우 선택 두 개 이상의 요소를 포함 할 수 있습니다 때마다. 이 작업을 수행하지 않으면 일치하는 첫 번째 요소 만 유효성이 검사됩니다. 당신 모든 양식 입력 요소가 검증을 위해 고려되고 있는지 확인해야합니다

  • 독특한name 속성이 포함되어 있습니다. 플러그인이 입력을 추적하는 방법입니다. 이 작업을 수행하지 않으면 일치하는 첫 번째 요소 만 유효성이 검사됩니다.


(!) 참고 :

당신은 전혀이 필요하지 않습니다 ...

submitHandler: function(form) { 
    form.submit(); 
} 

이것은 이미 기본 동작입니다. 실제로 form.submit()은 플러그인 내부에서 동일한 코드입니다. 즉,이 경우 submitHandler으로 전화 할 필요가 없습니다. 초과 라이딩이나 기능 향상이 필요한 경우에만 사용해야합니다 (예 : ajax()).

+0

나는 이것을 시도해 보았지만 처음에는 효과가 있지만 새로 생성 된 것은 유효하지 않습니다. 어떤 아이디어? 현재 귀하가 제공 한 링크의 코드를 사용하고 있습니다. –

+0

@adamcarlin, 새로운 요소를 생성 한 후에'rules()'메서드를 호출해야합니다. – Sparky

-1

class 대신 name을 사용하십시오.

rules: { 
    nameoftextbox: { 
     required: true, 
     digits: true 
    } 
} 

클래스와 함께이 기능을 사용하려면

jQuery.validator.addClassRules("classname", { 
    required: true, 
    digits: true 
}); 
+0

페이지의 단추를 눌러 유효성을 검사해야하는 요소를 추가 할 수 있기 때문에 ID가 변경 될 수 있습니다. –

+1

답변의 전반부가 기술적으로 올바르지 않습니다. ['.validate()'메소드 안에서 규칙을 선언하기 위해서만'name' 속성을 사용할 수 있습니다. (http://jqueryvalidation.org/reference/). 'id'가 아니라'class'도 아니고'name'을 제외한 다른 것. – Sparky

+0

젠장! 나는 설명서를 잘못 읽었을 것입니다. 당신의 정정에 감사드립니다! +1 – GuyT

-1
당신은 입력 태그에서 '필요한 숫자'속성을 추가 할 수

:

var validator = $("#result-form").validate(); 
validator.form(); 

이것은 또한 당신이 수 특별히 필요한 텍스트 상자를 선택하십시오. 더 읽기 나는 .validate() 방법을 사용하여 규칙을 선언 할 때는

$("#result-form").validate({ 
    rules: { 
     .text: { // <-- MUST only be a NAME attribute 
      required: true, 
      digits: true 
     } 
    }, 
    .... 

, 당신 만 name 속성을 사용하여 선언 할 수 있습니다 ... 당신이 이런 식으로 할 수 없습니다 http://jqueryvalidation.org/documentation/

관련 문제