2011-12-13 2 views
1

У меня есть два поля пароля, и я пытаюсь подтвердить, что они одинаковы, прежде чем разрешить запись. Вот мой код, он возвращает «Пароли не совпадают!» каждый раз ни на что. Когда я делаю alert(pass1) после моей линии var pass1 = ..., он дает мне undefined. Я также пробовал var pass1 = formPanel.findField("txt_newPIN").getValue(), и он возвращает то же самое. Вот код:Extjs Confirm Password

{ 
    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() вам необходимо передать имя поля вместо идентификатора поля.

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!"; 
      } 
     } 

Этот параметр валидатор ожидает возвращаемое значение истинно, если оно проверяет, и строка с сообщением об ошибке, если он этого не делает.

 Смежные вопросы

  • Нет связанных вопросов^_^