2010-06-04 8 views
0

텍스트 필드가 비어있는 경우 blur를 사용하여 유효성을 검사하려는 간단한 폼이 있습니다.JQuery Blur 유효성 검사 문제

아래 코드가 작동해야하지만 일부 텍스트가 튀어 나오더라도 경고 메시지를 계속 표시합니다.

var name = $("input#name").val(); 
$("input#name").blur(function() 
{ 
     if (('input#name:empty')) 
     { 
      // Testing 
      alert('Empty'); 
     } 
}); 

답변

1

는이 같은 $(this).val()를 사용하려면 :

$("input#name").blur(function() { 
    if ($(this).val().length === 0) { 
    // Testing 
    alert('Empty'); 
    } 
}); 

는 현재 당신이 참 if('input#name:empty')을 확인하고

, 임의의 문자열 (약하게 입력 된) 자바 스크립트에서 true을 될 것입니다. 이 더 자식 요소이 없다는 또한 :empty selector 검사,하지의 이 비어있는, 그래서 값이 빈 문자열, 또는 내가 또한 :

위의이 같은 .length하지 않는 한, 비어 있는지 확인하는 것이 이 ID가 일치하지 않으려는 다른 요소 유형에있을 가능성이 있습니다. #name이면 충분하며 더 빠르면 input 접두사가 불필요합니다.

+0

완벽한, 고마워 닉. 시간이 있다면,이 부분을 설명해 주시겠습니까? if ($ (this)) .val(). length === 0 { 다시 한번 감사드립니다! –

+0

@Keith - 물론, 'this'는 우리가 ['.blur()'] (http://api.jquery.com/blur/)에 전달하는 함수와 같은 이벤트 핸들러 내부의 입력 DOM 요소를 참조합니다. 그것을 ['$()'] (http://api.jquery.com/jQuery/)에 랩핑하면 jQuery 랩핑 된 버전이 생기고, ['.val()'] (http : // api .jquery.com/val /)을 사용하여 값을 얻습니다. 그런 다음 문자열의 길이가 0보다 큰지 확인합니다. 즉, 문자열의 길이가 0보다 큰지 여부를 확인합니다. –

0

이 시도 :

$("input#name").blur(function() 
{ 
    var name = $(this).val(); 
    if (name.length == 0) 
    { 
     // Testing 
     alert('Empty'); 
    } 
}); 

편집 : 닉은 입력 텍스트가 블러가 발생했을 때 검사 할 필요가 있다고 지적했다. 더 이상 변화를 주면 그것은 그의 대답과 같을 것입니다. 그래서 여기서 멈 춥니 다.

+0

이 방법은 작동하지 않습니다 ... 페이지가로드 될 때 값을 얻는 것이지 요소의 'blur'이벤트가 발생했을 때의 값이 아니라 그 시간에 값을 가져와야합니다. –