Rooock 2010-01-16 20:57
浏览 335
已采纳

在ComboBox的before事件中, 怎么与用户进行交互?

有一个下拉框. 期望是当触发下拉事件的时候, 给出提示: 真的要切换吗?
用户选择是, 切换; 否则, 不与切换.

参考API, 得到:
[quote]
beforeselect : ( Ext.form.ComboBox combo, Ext.data.Record record, Number index )
Fires before a list item is selected. Return false to cancel the selection.
[/quote]

OK.
于是我的代码如下:
[code="js"]
Ext.onReady(function(){
var comboBox = new Ext.form.ComboBox({
store:new Ext.data.SimpleStore({
fields: ['name']
,data: [['A'], ['B']]
}),
valueField: 'name', displayField: 'name',
editable: false,forceSelection: true,mode:'local',
blankText:'选择', emptyText:'选择' ,triggerAction: 'all'
,listeners:{
'beforeselect':function(combo, record, index){

            //  confirm不起作用
            Ext.MessageBox.confirm("提示","确定要切换?",
                function(e){
                    if('yes' == e){
                        return true;
                    }else{
                        return false;
                    }
                }
            );
            //  return false;   //  难道不能与用户交互?
        }
    }
});
comboBox.render(document.body);

});
[/code]

在beforeselect中有一个confirm与客户进行交互.

[color=red]实际效果却是, 当触发beforeselect事件, 出现confirm等待用户抉择是还是否的时候.

下拉框的值已经改变了.[/color]

  • 写回答

4条回答 默认 最新

  • 成尚謙 2010-01-16 22:00
    关注

    Ext.MessageBox.只是模仿原生的浏览器警告框,它没办法提供真实的原生警告框的中断(或者说等待用户反馈)功能。你可以在Ext.MessageBox.语句后加一句alert,测试一下:结果是Ext.MessageBox.confirm执行后,alert跟着就执行而不会等待confirm的反馈结果。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题