Javascript 检查web表单值是否已更改
我有一个多步骤表单,用户可以导航到任何页面来修改或添加信息。有一个菜单,显示当前进度、用户已完成的步骤,并允许导航到任何已完成或挂起的步骤 尽管有一个大按钮“保存并继续”,一些用户还是单击此菜单来进一步导航。我必须检查表单中的值是否已更改,并询问:“保存更改?是/否” 您建议我检查表单值是否已更改的最佳方法(使用最少的客户端JavaScript代码)是什么 稍后编辑: 我忘了告诉您多步骤表单在步骤之间使用回发。jQuery“脏表单”插件可能会在这里帮助您: 在这种情况下,应该很有用Javascript 检查web表单值是否已更改,javascript,html,webforms,Javascript,Html,Webforms,我有一个多步骤表单,用户可以导航到任何页面来修改或添加信息。有一个菜单,显示当前进度、用户已完成的步骤,并允许导航到任何已完成或挂起的步骤 尽管有一个大按钮“保存并继续”,一些用户还是单击此菜单来进一步导航。我必须检查表单中的值是否已更改,并询问:“保存更改?是/否” 您建议我检查表单值是否已更改的最佳方法(使用最少的客户端JavaScript代码)是什么 稍后编辑: 我忘了告诉您多步骤表单在步骤之间使用回发。jQuery“脏表单”插件可能会在这里帮助您: 在这种情况下,应该很有用 如果没有JQ
如果没有JQuery,这并不完全容易,因为表单的
onchange
事件在浏览器中不受一致支持
如果可以的话,可以使用其他答案中提供的jQuery插件之一
如果jQuery是不可能的,考虑添加一个简单的<代码> OnChchange =“如果(TH.Value=这个.Debug值)DurTyBigFalk=真;”<编码>到每个输入元素。如果您想要干净的方法,请在
部分执行此操作:
document.getElementById("formid").onchange =
function() { if (this.value ....) }
既然您提到要在两个步骤之间发回,我就有一个隐藏字段来存储下一步是什么。默认情况下,这将是表单的下一步。“保存并继续”按钮只是提交表单 然后,每个菜单项都会将此隐藏表单的值设置为适当的步骤,然后提交表单。比如:
<script type="text/javascript">
function goToStep(step) {
document.getElementById("hiddenFieldID").value = step;
document.getElementById("formID").submit();
}
</script>
<ul id="menu">
<li><a href="javascript:goToStep(1);">Step 1</a></li>
<li><a href="javascript:goToStep(2);">Step 2</a></li>
etc...
</ul>
函数goToStep(步骤){
document.getElementById(“hiddenFieldID”)。值=步骤;
document.getElementById(“formID”).submit();
}
等
尝试像这样检查表单值。
initFormChangeCheck()的调用将所有值复制到镜像对象中,并在调用checkChange例程的每个表单元素上设置mousedown和keydown事件。
你也可以每隔一段时间检查一下
var fList = new Object();
function initFormChangeCheck() {
for (var fOi = 0; fOi < document.forms[0].elements.length; fOi++) {
el = document.forms[0].elements[fOi];
fList[el.name] = el.value;
el.onmousedown = checkChange;
el.onkeydown = checkChange;
}
}
function checkChange() {
var changed = false;
for (var fOi = 0; fOi < document.forms[0].elements.length; fOi++) {
el = document.forms[0].elements[fOi];
if (fList[el.name] != el.value) {
changed = true;
}
}
document.forms[0].show_invoice.disabled = changed;
}
var fList=new Object();
函数initFormChangeCheck(){
对于(var fOi=0;fOi
彼得
需要更多信息。表单的每个页面都是单独的URL吗?他们在浏览表单时是否来回发布?或者完全是客户端使用jquery或javascript?另外,您使用的服务器端语言是什么?PHP?轨道?python等等,对不起,我提到了javascript客户端代码onlyNice插件。对不起,我忘了告诉你我的多步骤表单在两步之间使用回邮。非常感谢。它看起来很有希望:)我将给出一个tryPlugin,它似乎不是很灵活,所以我不得不稍微修改一下代码。但无论如何,这节省了我很多时间。谢谢你的回答:)它似乎有缺陷,也)没有真正使用过它-刚才快速查看了一下,如果有问题,很抱歉。谢谢你的回答,但这正是我担心的:)我会看一看:谢谢,但问题是如何检查表单是否脏)