2011-10-21 3 views
0

나는 지저분한 코드를 붙여 넣으 려하지만 죄송합니다. 도와 주실 수 있으면 실제로 비밀번호 변경 버튼을 onclientclick 이벤트에서 자바 스크립트 함수를 호출하는 암호 변경 기능을 구현하고 있습니다. 나는 3 현재 암호 (아약스 호출을 통해) 이전 암호와 일치하는지 여부 일jquery에서 암호 유효성 검사

  1. 새 암호를 검증 및 암호 필드가 같은 데이터를 포함 여부를 확인하고있다.
  2. 그리고 물론 필드의 다른 기준이 변화하고 성취하는 동안 빈 여부

두 번째와 세 번째 잘 작동하지만, 첫 번째 경우에도 비밀번호 didnt 한가 이전 암호와 일치되어 있는지 여부 암호

자바 스크립트 함수는 적절한 에러 메시지가 리턴 될 때 Ajax 호출 작성된

function check() { 
var isValid = true; 
    // Validate User Information. 
    if ($("input[id$='txtBoxPasswrd']").val().length >= 0 && $("input[id$='txtBoxPasswrd']").val().trim() != "") { 
     $.ajax({ 
      type: "POST", 
      url: "UserProfile.aspx/CheckCurrentUserPassword", 
      data: "{'userPasswrd':'" + $("input[id$='txtBoxPasswrd']").val() + "'}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 
       if (msg.d != null) { 
        var result = eval(msg.d); 
        if (result.toString() == "true") { 
         $("input[id$='txtBoxPasswrd']").next() 
         .removeClass() 
         .addClass('success') 
         .text("Ok"); 
        } 
        else { 
         $("input[id$='txtBoxPasswrd']").next() 
         .removeClass() 
         .addClass('failure') 
         .fadeIn('slow') 
         .text("Password doesn't match with your old password"); 

         isValid = false; 
        } 
       } 
      } 
     }); 
    } 
    else { 
     $("input[id$='txtBoxPasswrd']").next() 
         .removeClass() 
         .addClass('failure') 
         .fadeIn('slow') 
         .text("Can't be blank."); 
     isValid = false; 
    } 
    if ($("input[id$='txtNewPassword']").val().length > 0 && $("input[id$='txtNewPassword']").val().trim() != " ") { 
     if ($("input[id$='txtConfirm']").val().length > 0 && $("input[id$='txtNewPassword']").val() != $("input[id$='txtConfirm']").val()) { 
      $('#txtConfirm').next() 
             .removeClass() 
             .addClass('failure') 
             .fadeIn('slow') 
             .text("Password doesn't match."); 
      isValid = false; 
     } 
     else { 
      $("input[id$='txtNewPassword']").next() 
           .removeClass() 
           .addClass('success') 
           .fadeIn('slow') 
           .text("Ok"); 
     } 
    } 
    else { 
     $("input[id$='txtNewPassword']").next() 
          .removeClass() 
          .addClass('failure') 
          .fadeIn('slow') 
          .text("Can't be blank."); 
     isValid = false; 
    } 
    if ($("input[id$='txtConfirm']").val().length == 0 || $("input[id$='txtConfirm']").val().trim() == "") { 
     $("input[id$='txtConfirm']").next() 
          .removeClass() 
          .addClass('failure') 
          .fadeIn('slow') 
          .text("Can't be blank."); 
     isValid = false; 
    } 
    return isValid; 
} 

방법은 OK이다. isValid를 true로 반환하는 방법은 다른 두 가지 유효성 검사에서 잘 작동하는 ajax 호출 메서드를 제거하는 것입니다. 내가 뭘 잘못하고 있니?

는 맥

+0

왜'eval (msg.d)'를 json으로 구문 분석하려고합니까? – Val

+0

사실 나는 단지 ajax 호출 메소드에 의해 리턴 된 값을 검사 할 필요가 있으므로 – Mac

+0

firebug 또는 chrome 개발자 도구에서'console.log (msg)'를 사용하여 확인할 수 있으며 그 값에 따라 u – Val

답변

0

가의 오버 헤드를 감소하는 것이

var html = $.ajax({ 
      type: "POST", 
      url: "UserProfile.aspx/CheckCurrentUserPassword", 
      data: "{'userPasswrd':'" + $("input[id$='txtBoxPasswrd']").val() + "'}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      async:false 
     }).responseText; 

     if (html.toString().indexOf("false") >= 0) { 
      isValid = false; 
     } 
     else { 
      $("input[id$='txtBoxPasswrd']").next() 
         .removeClass() 
         .addClass('success') 
         .fadeIn('slow') 
         .text("Ok"); 
     } 
    } 
1

좋은 찾고 오류 메시지와 검증을 구현하는 가장 쉬운 방식으로 작동 JQuery와의 평가 플러그인입니다 만들기 위해 아약스 호출을 수정 고마워요 서버 상호 작용.

다음 링크를 참조하십시오.

jQuery and jVal Validation Plug-in. Adding an attribute to an element

http://code.google.com/p/jquery-jval/source/browse/trunk/jVal.html

http://code.google.com/p/jquery-jval/ 당신은 자바 스크립트와 jQuery를 사용하려는 경우에만 다음 자바 스크립트 정규식에 대한 이동합니다. javascript 정규 표현식 및 구현에 대한 귀하의 의견을 검증하는 방법을 살펴보십시오.

같은 것을 사용하려면 .ajax()의 success : and : : attributes 속성을 사용하고 msg.d를 사용하여 반환 된 정보를 ajax 요청으로 다시 보냅니다.

관련 문제