存在一个ExtJS的3.1实现的一个网站。 我想自动预先填充一些字段。 问题是,某些字段不被验证的ExtJS时自动填充。
我可以解雇的ExtJS的模糊事件触发验证:
field.fireEvent('blur', field);
不过,我并不想这样做。 我想要验证通过正常的事件通过jQuery触发触发:
$field.blur();
什么我问这里是以下几点:
如何触发一个文本框的模糊事件以同样的方式浏览器做它,这样也ExtJS的事件处理程序的运行?
BTW:为什么我不想手动触发ExtJS的事件原因很简单:这种解决方案似乎为ExtJA 3.1工作,但不再是4.2,我不想写特殊处理代码的ExtJS的每个版本。
如果你想绕一点点玩:
这里是网址: https://www.pantaenius.com/en/service/login/request-a-quote.html?utm_source=http%3A%2F%2Fwww.pantaenius.com%2Fen%2Famerican-yacht-insurance html的&utm_medium =直接&domain_segment = 33
在Chrome中打开它,打开Chrome的开发者控制台,并粘贴以下文字:
delete console.log
var $city = jQuery('#ext-comp-1080');
var city = Ext.ComponentMgr.all.filterBy(function(x) { return x.isXType('combo') && x.id==='ext-comp-1080'; }).items[0];
var blurEventFireFn = city.events.blur.listeners[0].fireFn;
city.events.blur.listeners[0].fireFn = function(field) { console.log('ExtJS blur fired!'); blurEventFireFn(field); };
当你在城市字段中单击,然后在其他一些领域,你会看到输出ExtJS blur fired!
在控制台中。 你会看到,当你执行相同的输出city.fireEvent('blur', city);
。 然而,你不会看到输出,当你执行$city.blur();
, $city.trigger('blur');
要么
var event = document.createEvent('HTMLEvents');
event.initEvent('blur', true, true);
$city.get(0).dispatchEvent(event);
任何想法如何建立正常的事件和ExtJS的事件之间的这座桥将不胜感激。