6
我在我的extjs應用程序中有一個組合,我想顯示'您是否 當然?'向用戶確認窗口,並在用戶拒絕的情況下防止改變。如何才能讓用戶確認ExtJs中的組合框更改事件?
由於JavaScript的確認框是同步的,所以它可以正常工作。但是使用Ext JS,會顯示確認消息,而我的代碼的其餘部分將在用戶響應之前執行。這裏是我的代碼:
// JavaScript confirm box
{
xtype: 'combo',
...
...
...
listeners: {
beforeselect: function(combo, record, index) {
if(confirm('Are you sure ?') == false)
{
return false; // prevent combo from changing
}
// else continue
}
}
}
// Ext JS message box (to confirm)
{
xtype: 'combo',
...
...
...
listeners: {
beforeselect: function(combo, record, index) {
Ext.Msg.show({
title: 'Warning',
msg: 'Are You Sure ?',
buttons: Ext.Msg.YESNO,
fn: function(btn) {
if (btn == 'yes') {
// continue and set new value on combo
}
else if (btn == 'no') {
// prevent combo from changing
}
}
});
}
}
}
問題是Ext.Msg.show
得到一個回調函數,而不是等待用戶的答案,我們無法阻止組合框變化。
我該怎麼辦?
這是不行的,因爲在預先選擇我們不知道新的選定的價值呢! – 2013-03-03 04:57:37
請認真思考,然後回答 – 2013-03-03 05:58:36
您確實知道'beforeselect'中的選定值是第二個參數(上面的答案中的記錄)。要獲得值,你可以使用'record.get([combos value field]);' – Geronimo 2013-03-04 00:41:53