Extjs Подтвердите пароль - PullRequest
       23

Extjs Подтвердите пароль

1 голос
/ 14 декабря 2011

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

    {
    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 ]

3 голосов
/ 14 декабря 2011

Спасибо, Нгиа, благодаря твоему ответу я оказался на полпути, позволив выбрать поля. Остальные делали пользовательскую опцию 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!";
            }
        }

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

2 голосов
/ 14 декабря 2011

Вам нужно передать имя поля вместо идентификатора поля при использовании метода findField ().

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

или просто получить его значение напрямую

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