div中的按钮在jquery对话框中不起作用

时间:2012-12-17 13:42:56

标签: javascript jquery asp.net-mvc-3

我在我的MVC3应用程序中使用uploadify fileupload控件。

我看到了jQuery Dialog的非常奇怪的行为。

我在视图中使用flash Browse按钮。单击该按钮时,它会显示要浏览的所有目录并上传所选文件并上传。

首先,我尝试过没有jQuery对话框。它非常完美,可以上传文件并能够在所有浏览器中取消文件。

当我在jQuery对话框中使用容器进行渲染时,显示在Browse中的Firefox按钮,但我无法点击按钮,它可以在IE和Chrome中运行但是它可以正常工作无法取消Chrome中的上传。

这是我的代码:

我认为

HTML代码:

<input type="button" id="btnImg"/>
    <div id="fileupload">
        <div style="clear: none;">
            File to Upload:
            <input type="file" name="file_upload" id="file_upload" style="padding-left: 50px;"/><hr />
        </div>
        <p style="text-align: right;">
            <input type="submit" id="selectimage" value="Ok" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"/>
            <input type="submit" id="cancelimage" value="Cancel" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" onclick="cancelupload();" />
        </p>
    </div>

Javascript代码:

$("#btnImg").click(function () {
    $("#fileupload").dialog({
        width: '511',
        height: '200',
        show: "blind",
        position: [300, 500]
    });
});

单击btnImg时,会弹出弹出窗口。

如何解决这个问题?这是怎么发生的?

2 个答案:

答案 0 :(得分:0)

您很可能必须使用live()函数将click处理程序绑定到按钮,或者您必须在对话框的div上调用dialog()之后绑定单击处理程序

此外,您使用“btnImg”作为ID,但我在上面的HTML中没有看到任何使用它作为id的内容。这是一个错字,还是我们只是没有看到

答案 1 :(得分:0)

我可以解决我的问题。

以下是解决方案。

$("#btnImg").click(function () {
            $("#fileupload").css("visibility", "visible");
            $("#fileupload").dialog({
                width: '511',
                height: '200',
                modal:true,
                //show: "blind",
                position: [300, 500],
                open: function (type, data) {
                    $(this).parent().appendTo("form");
                }
            });
        });

问题是我的div不在form标记内。因此,如果jQuery没有嵌套在表单标记中,jQuery将忽略窗口上载。