FormPanelの私のフィールドに、リスナーblur
を追加しました。このイベントは次のように私は、フォームの検証を実行発生した場合:フォームを無効としてマーク
listeners:{
scope: this,
blur: function(field, value){
var username = field;
if (username.getValue() == '') {
username.markInvalid('This field is required');
} else {
Ext.Ajax.request({
url: 'users/validateForm',
method: 'POST',
params: 'username=' + username.getValue(),
success: function(response, opts) {
var jsonData = Ext.decode(response.responseText);
if (jsonData.msg.username != '') {
username.markInvalid(jsonData.msg.username);
}
}
});
}
}
}
buttons: [{
text: 'Save',
handler: function() {
var form = this.up('form').getForm();
if (form.isValid()) {
alert('test');
}
},
formBind:true
},{
text: 'Cancel'
}]
のExt JSの文書が説明するように、markInvalid()関数はフィールド自体に影響を与えます。しかし、フォームが無効な場合は、送信ボタンが無効になるように、フォームを無効に設定したいと考えています。現在、フォームのisValid()関数は、フィールドが無効としてマークされていますが、常にtrueを返します。
私の質問は今、どのようにしてフォームが上記のコードでも無効として設定されるようにすることができますか?
ありがとうございました!
バージョン4.0.2aではformBindが正しく動作しません。 [このwarkaround](http://stackoverflow.com/questions/6795511/extjs-simple-form-ignores-formbind/6798704#6798704)を試してください。 –
私は問題がformBind設定ではないと思います。回避策ではvtypesを使用しましたが、私はこれを使用しません。保存ボタンをクリックすると、 'isValid()'関数は常に 'true'を返します。私はこれがformBindメソッドとは何の関係もないと思います。 – shub
Form.isValidは、 'form._boundItems'でキャッシュされた間違ったフィールドを持つ可能性があるため、常にtrueを返します。だから、私が投稿したリンクと同じ問題かもしれません。 –