2013-06-18 2 views
0

기존의 유효성 검사 설정에 비밀번호 강도 기능을 추가했는데 가장 좋은 방법이 무엇인지 잘 모르겠다. 내 오류 표시는 다음과 같습니다.Jquery validate - 생성 된 라벨 제거

highlight: function(label) { 
    $(label).closest('.form-element').addClass('error').closest('.form-element').removeClass('success'); 
    $('#result').html('');/*removes any strength messages on failed validation*/ 
     }, 
success: function(label) { 
     label 
     .text('OK!').addClass('valid') 
     .closest('.form-element').addClass('success'); 
     }, 

id "result"는 암호 강도 메시지입니다. 따라서 유효성 검사 오류 (범위 길이, 필수)가 트리거되면 암호의 강도와 관련된 메시지가 숨겨집니다.

관련 부분 암호 강도 검사

은 이것이다 : 나는 유효성 검사 오류 중 하나가 표시되는 경우, 이러한 오류 중 하나가 표시되지 않습니다되는 일이 싶은 무엇

if (strength < 2){ 
     $('#result').removeClass(); 
     $('#result').addClass('passwordWeak'); 
    return '(Password is weak)' 
} else if (strength == 2) { 
    $('#result').removeClass(); 
    $('#result').addClass('passwordGood'); 
    return '(Password is good)' 
} else { 
    $('#result').removeClass(); 
    $('#result').addClass('passwordStrong'); 
    return '(Password is strong)' 
} 
}; 

. 그들은 내가 그것을 트리거하는거야 3 문자 (쇼 "비밀 번호가 약한"), 다음 필드에 탭 (6 최소 길이에 대한 유효성 오류가 발생하고 "비밀 번호가 약한"숨 깁니다) 입력 한 다음 다시 더 많은 문자를 암호로 입력 나는 여전히 유효성 검사 오류 메시지가 있지만 문자 4를 입력하자마자 "암호가 약합니다."라는 메시지가 나타납니다. 현재 유효성 검사 오류가 표시되지 않는 경우 표시 할 등급은 단 하나입니다.

검증을 위해 생성 된 오류 레이블은 다음과 같습니다

<label class="error" for="thispassword" generated="true">Password must be between 6 and 50 characters.</label> 
+0

당신이 hasClass을 사용할 수 있습니다 : 실제 입력 필드에 오류 클래스를 제거 (유효성 검사에 의해 생성) 생성 된 오류 라벨과 기타를 숨기기 위해 한 - 암호 필드에 내의 keyup()에서 나는 두 줄을 추가()를 사용하여 결정합니다. ** if (! $ (label) .closest ('. form-element')와 같은 것) hasClass ('error') && strength <2) ** 이는 요소에 포함되지 않아야하는 if 블록을 실행하는 것을 의미합니다. 클래스 – Nirus

+0

유효성 검사 오류가 발생하기 전에 'error'클래스의 레이블이 없기 때문에 "암호가 정의되지 않았습니다."라는 메시지가 나타나 초기 암호 강도 테스트가 실패합니다. – Steve

+0

당신의 코드와 관련된 jsfiddle을 게시 할 수 있습니까? – Nirus

답변

0

가 여기에 내가 (지금은) 그것을 해결 방법은 다음과 같습니다.

$('#thispassword').keyup(function() { 
    //$('label.error').hide(); 
    // prev hids all error labels following just gets the one we want 
    $('#result').prev('label.error').hide(); 
    $(this).closest('.form-element').removeClass('error'); 
    $('#result').html(checkStrength($('#thispassword').val())); 
}); 
+0

예, 그 중 하나가 작동합니다! – Nirus