JQuery Change()函数IE问题

时间:2009-06-11 15:49:06

标签: jquery

我有一个asp.net formview控件,我想要禁用更新/取消按钮,直到用户进行更改并且我尝试使用jquery执行此操作。以下代码适用于FireFox,并在以插入模式打开表单时在IE中工作。但是,如果在编辑模式下打开表单(在IE中),因此在页面打开时填充,按钮会在一瞬间被禁用,但随后会重新启用。

这就是我目前使用的。

// Handle the document.ready event:
    $(document).ready(function() {

        // Disable the save button
        $("input.button")
            .attr("disabled", "disabled")
            .removeClass("button")
            .addClass("button-disabled");

        // Hook up event handler to enable save button when a change is made
        $("input").change(function() {
            $("input.button-disabled")
                .removeAttr("disabled")
                .removeClass("button-disabled")
                .addClass("button");
        });
        // Hook up the cancel confirmation dialog
        $(".cancelEdit").click(function() {
            showCancelConfirmation($(this));
            return false;
        });
    })

我将启用事件处理程序代码更改为

$("input").bind("keypress", function() {
            $("input.button-disabled")
                .removeAttr("disabled")
                .removeClass("button-disabled")
                .addClass("button");
        });

暂时解决了问题,因为按钮被禁用,直到用户输入一些文本。我使用此方法的问题是,如果用户删除某些文本(仅再次使用IE),则不启用按钮,并且我还使用AJAX Toolkit日历,并且在使用它更改日期时不启用按钮。

我知道我可以使用函数中的'click'关键字在单击字段后立即启用按钮,但这对ajax日历输入问题没有帮助。

关于如何解决这个问题的任何想法?

提前致谢

1 个答案:

答案 0 :(得分:1)

好吧,我通过将输入框的cssclass附加到输入字符串,并使用keydown和更改参数来对此进行排序 - 如果按下删除,则keydown会激活按钮,如果进行了更改,则更改会激活按钮 - 包括是否通过ajax工具包日历进行更改。

$("input.input-box-webform").bind("keydown change", function() {
            $("input.button-disabled")
                .removeAttr("disabled")
                .removeClass("button-disabled")
                .addClass("button");
        });