在我们为当地商会制作的相当大的自定义后端系统上工作,我们需要做的一件事是阻止他们点击子表单链接(在单独的页面上发布)以填充内容并丢失他们在此之前输入的更改或信息。
表格比较大,一般有30个或更多的字段。以前,我只是简单地使用 Coldfusion 进行检查,方法是根据他们所在的页面类型(新建与编辑)在 url 中传递一个简单的变量,但显然随着事情变得越来越复杂,这种基本方法并不令人满意。
它必须是动态的。
因此,基本上,如果用户在编辑页面上进行任何更改并尝试在公司地址部分单击“添加新地址”,它将检测所做的更改(困难部分),并禁用链接(这是简单部分)添加一个新地址,直到他通过提交(循环回到同一页面)保存主表单。
简单地对字段使用 onChange 属性是行不通的,因为很多人已经将它用于某些功能。
我试过弄乱一些不同的脚本,其中许多涉及 $(":input") 过滤器。
这个小提琴在这里:http: //jsfiddle.net/AFahj/50/
var propertyChangeUnbound = false;
$("#testbox").on("propertychange", function(e) {
if (e.originalEvent.propertyName == "value") {
alert("Value changed!");
}
});
$("#testbox").on("input", function() {
if (!propertyChangeUnbound) {
$("#testbox").unbind("propertychange");
propertyChangeUnbound = true;
}
alert("Value changed!");
});
这个小提琴代码分为两部分。一种用于更现代的浏览器(下)和旧的 IE9 之前的垃圾(上)。
它演示了我想要的基本功能,但问题是表单本身的范围。它们很大。我需要足够灵活的东西来运行并获取单个脚本中的所有输入,并准备好根据更改执行操作。
那么我将如何创建一个脚本来观察是否已编辑任何输入(即使它们有很多)并执行适当的操作?