Internet Explorer中的JQuery对话框问题

时间:2012-05-19 07:33:59

标签: jquery-ui

我正在使用UI对话框来显示消息。

适用于Firefox和Google Chrome。但是,当我在IE版本中测试时,对话框无法打开。

任何人都可以说出真正的问题是什么吗?

我在下面贴了我的代码:

function check_selected(c) {
    var count = c - 1;
    var radios = document.getElementsByName('plan');
    for ( var i = 0; i < radios.length; i++) {
        if (radios[i].disabled) {

            if (radios[i].checked) { // checked

                $('#planalert').dialog({
                    modal : true,
                    autoOpen : true,
                    title : "Plan",
                    width : 650,
                    height : 150,
                    show : "blind",
                    hide : "scale",
                });

                var c = 0;

            } else {
                var c = 1;
            }
        }

    }
    ;

    if (c == 0) {
        return false;
    } else {
        return true;
    }
}

1 个答案:

答案 0 :(得分:0)

尝试从您传递的选项对象dialog中删除尾随逗号:

$('#planalert').dialog({
    modal:true,
    autoOpen: true,
    title:"Plan",
    width:650,
    height:150,
    show: "blind",
    hide: "scale" // <-----
});

Internet Explorer会阻塞额外的逗号,而其他浏览器可能不会。

此外,删除;循环结束括号末尾的分号(for):

for (var i = 0; i < radios.length; i++) {
    /* snip */
} // <--- semicolon not necessary

此外,您试图在函数内多次定义c。您将它传递给函数,因此您的var c = ...语句实际上没有您想要的效果。您应该使用另一个变量(我建议使用而不是改变您传递的参数),或者从var块中删除if语句。

此外,您的循环实际上只为最后一个禁用的单选按钮设置c。这是你的意图吗?

无论如何,这是我将如何重写它(不试图解决上面的逻辑错误)。请务必使用JsHint之类的工具检查您的JavaScript以获取探测:

function check_selected(c){
    var count=c-1;
    var radios = document.getElementsByName('plan');
    var isChecked = 0;
    for (var i = 0; i < radios.length; i++) {
        if (radios[i].disabled) {
            if (radios[i].checked){ // checked
                $('#planalert').dialog({
                    modal:true,
                    autoOpen: true,
                    title:"Plan",
                    width:650,
                    height:150,
                    show: "blind",
                    hide: "scale"
                });
                isChecked = 0;

            } else{
                isChecked = 1;
            }
        }
    }

    return isChecked;
 }