我需要一些帮助我是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错误,它再也没有运行过。
答案 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",...
所以它绑定到所有新输入。