日期:2014-05-17  浏览次数:20577 次

请教jQuery:Dialog的modal状态自动解除
现在做的一个项目,画面上有检索,清除,追加等按钮,当追加按钮按下时,弹出jQuery的dialog。
共通js如下
var AddDialog = new function() {
  self.d = null
  this.init = function(opt){
    var o = {modal:true,..省略`..};
     for (var k in opt ){o[k]=opt[k]}
    self.d = $("#template").dialog(o);//template为div的id
    $("#btnsave").click(function(){/*共通保存方法*/});
    $("#btnclose").click(function(){/*共通关闭方法*/});
    //其他略
  }
  //其他略
}

各画面初始化时
$(function(){
  //其他略
  AddDialog.init();
  //其他略
});

这回感受jqueryDialog便利的同时,也碰到一个很奇怪的现象,很抓狂,不知道有没有人遇到过?

画面载入后,直接点追加按钮,在dialog上输入数据后,正确执行,入力检查时有错也可以在dialog的指定区域显示,modal状态也可以保持。但是,在按下检索按钮查询之后,在点追加按钮,dialog的入力项有错的时候,一切都可以正常显示,就是modal状态自动变成了false(并不是每次都这样,但是几率很大,因为不知原因,具体是哪个出了问题说不出来)。

有没有同行遇到过类似问题。麻烦诸位高人帮忙提示下调查的线索,不胜感激。

我用的jquery版本:1.5.2
ui版本为:1.8.13

我用firebug调试的时候,发现在执行我的入力检查方法之后,dialog依然是modal状态,但是在方法执行完,jquery判断是否存在其他handler之后,modal状态消失。怀疑是不是jquery的bug呢?

最后,怎样才能回避掉这个问题呢?
jquery dialog modal状态消失

------解决方案--------------------
入力检查 代码呢?