2012-11-23 6 views
0

이것은 정말 기본적인 것이지만 onblur 또는 입력 중에 유효성을 검사하는 양식 요소를 얻으려고합니다. 물건을 올바르게 작동 시키는데 정말 힘든 시간을 보내고 있습니다.jquery 유효성 검사 시작

$('document').ready(function(){ 
    $('form').validate({ 
     rules: { 
       a: { 
        onkeyup:true, 
        required:true, 
        minlength:2 
        } 
     },  
     messages: { 
       a: { 
        required: "enter your name!" 
        }  
     } 

    }); 
}); 

부분적으로 작동하는 것을 얻을 수 있지만 뭔가를 입력 한 후 입력을 클릭해야합니다. 왜 이런거야? 나는 이것을 추가했다.

$('#a').blur(function(){ 
     $("form").validate().element("#a"); 
    }); 

그것은 블러에서 작동하지만, 내가 돌아와 올바른 엔트리를 입력하면 오류 메시지가 사라지지 않는다. 여기

<div> 
<form action="#"> 
    <input type="text" name="a" id="a"> 
</form> 
</div> 

바이올린됩니다 다음은 HTML입니다

http://jsfiddle.net/mmw562/S7AKK/16/

http://jsfiddle.net/mmw562/S7AKK/17/

사람이 무슨 일이 일어나고 있는지 설명 할 수 있습니까? 나는 이것이 꽤 기본적인 것들이라는 것을 알고 있지만 당신의 도움에 감사드립니다 ....

+0

ok, 나는 onkeyup을 없앴습니다. 그리고 그것은 모든 차이를 만드는 것처럼 보였습니다 ... 왜 그것이 그 일들을 파울하게하는지 확신 할 수 없습니다. – user791187

+0

그 이유는 onkeyup이 유효성 검사 규칙이 아니기 때문입니다! .validate() 옵션입니다. – Sparky

답변

2

As per documentation, onkeyup:은 필드 검증 규칙이 아니며 .validate() 옵션입니다. 당신은 ... 적절하게 배치해야합니다

$('document').ready(function(){ 
    $('form').validate({ 

    // "onkeyup" is the default behavior, leave it out unless disabling 
    // onkeyup: false, 

     rules: { 
      a: { 
       required:true, 
       minlength:2 
      } 
     },  
     messages: { 
      a: { 
       required: "enter your name!" 
      }  
     } 

    }); 
}); 


편집 :

onkeyup: 그렇게 간단하게 기본 동작을 위해 그것을두고, 기본 동작입니다. true으로 설정하면 중복 될뿐만 아니라 의도 한 기능이 실제로 작동하지 않게됩니다.

당신이 그것을 해제해야하는 경우는, false로 설정 :

onkeyup: false 

당신이 기능을 사용 onkeyup의 기본 동작을 변경해야하는 경우 :

onkeyup: function(element, event) { 
    // your custom onkeyup functionality 
} 

그리고 순수 참조를, 기본 onkeyup: 기능이 작동하는 방식은 다음과 같습니다.

onkeyup: function(element, event) { 
    if (event.which === 9 && this.elementValue(element) === '') { 
     return; 
    } else if (element.name in this.submitted || element === this.lastActive) { 
     this.element(element); 
    } 
} 
+0

onkeyup의 기본 동작은 true입니다. 이것을 true로 설정할 필요가 없습니다. 실제로 스크립트 오류가 발생하면이를 설정하십시오. 이 질문에 대한 내 대답을 참조하십시오. http://stackoverflow.com/questions/10938431/jquery-plugin-validate-revalidate-as-typing-mouse-focus/13519912#13519912 –

+0

@politus 사실, 이제 이것을 기억하고 답변을 업데이트했습니다. 따라서. 그러나 스크립트 오류는 발생하지 않습니다. 'onkeyup : true '를 설정하는 것은'false'를 설정하는 것과 실질적으로 동일합니다; 'onkeyup'을 비활성화합니다. (적어도 최신 버전에서.) – Sparky