Javascript ExtJS4 Transform Combobox onchange()事件不';行不通
我在extjs4中有一个transformJavascript ExtJS4 Transform Combobox onchange()事件不';行不通,javascript,extjs,combobox,extjs4,Javascript,Extjs,Combobox,Extjs4,我在extjs4中有一个transform组合框: <script> Ext.onReady(function() { Ext.tip.QuickTipManager.init(); var transformed = Ext.create('Ext.form.field.ComboBox', { typeAhead: true, transform: 'DisplayListID',
组合框
:
<script>
Ext.onReady(function() {
Ext.tip.QuickTipManager.init();
var transformed = Ext.create('Ext.form.field.ComboBox', {
typeAhead: true,
transform: 'DisplayListID',
forceSelection: true
});
});
</script>
<select id="DisplayListID" onChange="change();">
<option> ...
</select>
Ext.onReady(函数(){
Ext.tip.QuickTipManager.init();
var transformed=Ext.create('Ext.form.field.ComboBox'{
是的,
转换:“DisplayListID”,
强制选择:正确
});
});
...
ExtJS成功地将我的HTMLselect
转换为一个组合框
,但当我选择一个元素时,不会触发onChange
事件
如何将javascript函数
change()
绑定到我的转换CombBox
?通过向组合框添加侦听器来使用ExtJs更改事件:
listeners: {
change: change
}
第二个变化是你的功能 Lorenz是正确的,但是如果您试图同时转换多个组合,并且这些组合已经定义了函数,那么您需要手动将每个新转换的组合与其处理程序方法链接起来,这可能是一场真正的噩梦。但是,您可以子类控件,并让它自动处理方法链接,为此,您必须考虑到在组合框控件初始化后原始的“选择”被删除。因此,在调用父ComboBox init方法之前,必须确保保留对目标方法的引用,否则将无法获取它,例如:
initComponent: function() {
var me = this,
transform = me.transform,
transformSelect,
transformMethod;
// Check if transform id has been supplied
if(transform) {
// Attempt to retrieve target select from the DOM
transformSelect = Ext.getDom(transform);
// Get sure select node exists
if (transformSelect) {
// Keep a reference to target method
transformMethod = transformSelect.onchange;
}
}
// Now that we have the method info
// Allow ComboBox init method to replace original
// select tag with ExtJs Control
me.callParent(arguments);
// Bind change event with original handler method
me.on('change', transformMethod, me);
}
我创建了一个完整的工作示例。我希望你觉得它有用