以下代码在ExtJs中使用textfield的验证器配置:
Ext.onReady(function(){
Ext.create('Ext.form.Panel', {
title: 'Simple Form',
width: 350,
url: 'save-form.php',
layout: 'anchor',
defaults: {
anchor: '100%'
},
defaultType: 'textfield',
items: [{
fieldLabel: 'First Name',
validateOnBlur:true,//calling validator on blur
validateOnChange:false,//not calling validator on change
validator:function(){
console.log('in validator');//printing to console whenever validator is called
return true;
}
}],
renderTo: Ext.getBody()
});
});
在代码中,validateOnBlur设置为true,其中validateOnChange设置为false。
问题在于,当用户第一次关注该字段并且模糊不清时,验证器函数会被触发两次,如附带的屏幕截图所示。
如果用户再次聚焦该字段并且模糊,则验证器仅被触发一次,对于所有后续此类操作也是如此。
但是第一次,当用户关注字段并模糊(通过鼠标单击或标签输出)时,验证器功能会被触发两次。
有人可以指出这背后可能的原因是什么,以及如何阻止它或者这是ExtJs 4.1版中的错误?
提前致谢
答案 0 :(得分:0)
我认为这将解决您的问题... Blur的工作方式不同......您可以使用模糊而不是更改,看看会发生什么以及您想要什么
items: [{
fieldLabel: 'First Name',
validateOnBlur: true,
listeners: {
change: function (){
console.log('in validator');
return true;
}
}
}]