2009-09-21 4 views
1

Я сделал свой собственный custon VType который выполняет AJAX запрос, чтобы проверить, если имя пользователя находится в базе данных:Программным установить Ext.TextField быть действительным

Ext.apply(Ext.form.VTypes, { 

    username: function(val, field) { 
     var conn = new Ext.data.Connection(); 
     conn.request({ 
      url: '/account/CheckUsernameAvailability', 
      params: { "username": val }, 
      success: function(data) { 
       console.log("field = ", field); 
       console.log(data.responseText); 
      }, 
      failure: function() { 
       Ext.Msg.alert('Status', 'Unable to add vote'); 
      } 
     }); 
    }, 

    usernameText: 'Username is already taken' 
}); 

Проблема в том, что запрос, очевидно, асинхронный, поэтому я не могу просто вернуть true, если data.responseText в порядке. В рамках этой функции мне нужно иметь возможность установить поле «поле».

Но я не могу найти что-либо в Ext API, который показывает, как это сделать? (Я предполагаю, что я должен быть что-то отсутствует)

ответ

4

возвращение истинного от функции и вызвать field.markInvalid() при неудаче

+1

Примечание: этот метод не вызывает Validate или IsValid методы поле, чтобы вернуться ложным, если значение делает пас Проверка. Таким образом, простое указание поля как недействительного не будет препятствовать передаче представленных форм – Estevez

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