页面刷新后jquery.change函数无法触发

时间:2011-12-20 20:24:53

标签: jquery asp.net

我需要一些帮助我是jQuery的新手,我正在尝试使用.change函数。所以我要做的是检查表单上是否更改了值。我的应用程序有几个母版页,更新面板等。 (ASP.net)所以我在母版页上使用以下代码:

 <asp:HiddenField ID="_Changed" runat="server" Value="false" />

        <script>
            $(":input").change(function () {
                document.getElementById('_Changed').value = "true";
                alert("Change occured");
                return false;
            });
        </script>

这可以在每个表单上多次使用,但在我真正尝试使用它的一个表单上,它只能运行一次。另一种形式是唯一与隐藏字段交互的形式。此页面的代码是:

<script>
function Home_Click() {
        var boolRetVal = false;
        if (document.getElementById('_Changed').value == "true") {
            if (confirm("You have unsaved data do you wish to proceed?")) {
                boolRetVal = true;
                document.getElementById('_Changed').value = "false";
            }
        } else {
            boolRetVal = true;
            document.getElementById('_Changed').value = "false";
        }

        return boolRetVal;
    }
</script>

<asp:Button ID="btnHome" runat="server" Text="Home" OnClientClick="return Home_Click()"
                                    OnClick="btnHome_Click" CausesValidation="false" />

因此,当有人单击主页按钮并单击确定提示时,屏幕将重新加载.change查询永远不会再次运行。我没有收到任何javascript错误,它再也没有运行过。

2 个答案:

答案 0 :(得分:3)

尝试以下(需要jQuery 1.7 +):

<script type="text/javascript">
    $(":input").on("change", function (e) {
        e.preventDefault();
        $("#<%: _Changed.ClientID %>").val("true");
        alert("Change occured");
    });
</script>

答案 1 :(得分:0)

如果要刷新页面的某些部分并且$(":input").change(...刚刚在第一页状态下执行,则刷新时加载的新$(":input")不会生效。你必须使用:

 $(":input").live("change",...

所以它绑定到所有新输入。