2011-12-13 3 views
1

두 개의 비밀번호 입력란을 가지고 있으며 입력을 허용하기 전에 비밀번호 입력란이 동일하다는 것을 확인하려고합니다. 여기 내 코드가 있는데, "Passwords does not match!"가 반환됩니다. 상관없이 매번. 내 var pass1 = ... 라인 이후에 alert(pass1)을 수행하면 undefined이 표시됩니다. 나는 또한 var pass1 = formPanel.findField("txt_newPIN").getValue() 시도하고 똑같은 것을 반환합니다. 코드는 다음과 같습니다.Extjs 비밀번호 확인

{ 
    fieldLabel:"PIN/Password", 
    actionText:"Edit", 
    fieldValue:"****", 
    dialog:new MyAccount.DialogBox({ 
     id:"win_editPIN", 
     name:"editPIN", 
     headerContent:"Edit Password:", 
     updateURL:"/uiapi/myaccount/setAccountPIN", 
     items:[{ 
      id:"txt_currentPIN", 
      name: "currentPIN", 
      fieldLabel: "Current Password", 
      validationEvent:"blur", 
      allowBlank: false, 
      maxLength:20, 
      inputType:"password" 
     },{ 
      id:"txt_newPIN", 
      name: "newPIN", 
      fieldLabel: "New Password", 
      vtype:"confirmPassword", 
      validationEvent:"blur", 
      allowBlank: false, 
      maxLength:20, 
      inputType:"password" 
     },{ 
      id:"txt_confirmPIN", 
      fieldLabel: "Confirm Password", 
      vtype:"confirmPassword", 
      validationEvent:"blur", 
      initialPin:"txt_newPIN", 
      allowBlank: false, 
      maxLength:20, 
      inputType:"password" 
     }], 


validateForm:function() { 
    var formPanel = Ext.getCmp("win_editPIN").formPanel.getForm(); 
     // Save the fields we are going to insert values into 
     var pass1 = formPanel.findField("txt_newPIN"); 
    var pass2 = formPanel.findField("txt_confirmPIN"); 

     if (pass1 != pass2) 
      return {success:false, errorMessage:"Passwords do not match!"} 
     } 

    }) 

답변

2

findField() 메소드를 사용하려면 필드 ID 대신 필드 이름을 전달해야합니다.

var pass1 = formPanel.findField("newPIN"); 

또는, 당신의 대답은 나를 필드를 선택할 수 있도록, 중간이 나있어 단순히 값을 직접

var pass1 = Ext.getCmp('txt_newPIN').getValue(); 
3

감사 NGHIA를 얻을. 나머지는 사용자 정의 validator 옵션을 만들고 있었는데, 여기에 코드가 있습니다. 간략하게 마지막 항목 만 보여줍니다. 이 유효성을 검사하는 경우

 { 
      id:"txt_confirmPIN", 
      name: "newPIN_confirm", 
      fieldLabel: "Confirm Password", 
      validationEvent:"blur", 
      initialPin:"txt_newPIN", 
      allowBlank: false, 
      maxLength:20, 
      inputType:"password", 
      // This custom validator option expects a return value of boolean true if it 
      // validates, and a string with an error message if it doesn't 
      validator: function() { 
        var formPanel = Ext.getCmp("win_editPIN").formPanel.getForm(); 
        // Save the fields we are going to insert values into 
        var pass1 = Ext.getCmp('txt_newPIN').getValue(); 
        var pass2 = Ext.getCmp('txt_confirmPIN').getValue(); 
        console.log("pass 1 = " + pass1 + "--pass 2 = " + pass2); 

        if (pass1 == pass2) 
         return true; 

        else 
         return "Passwords do not match!"; 
      } 
     } 

이 검증 옵션은 사실의 반환 값을 예상하고 오류 메시지가있는 문자열은하지 않습니다.