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 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误