使用jquery监视表单字段更改
尝试学习一些jquery来实现自动保存function,需要一些帮助。 我有一些代码来监视表单字段的状态,以查看是否有任何更改。 一切正常,但我只需要监控特定表单中的更改,而不是页面上的所有表单输入。 在同一页面上有一个搜索框和一个新闻稿表单,当这些表单字段发生变化时,它们也会被检测到,我需要以某种方式或更好的方式过滤掉,只针对特定的表单。
$(function(){ setInterval("CheckDirty()",10000); $(':input').each(function() { $(this).data('formValues', $(this).val()); }); }); function CheckDirty() { var isDirty = false; $(':input').each(function () { if($(this).data('formValues') != $(this).val()) { isDirty = true; } }); if(isDirty == true){ alert("isDirty=" + isDirty); } }
只需在表单中添加一个类并使用它进行过滤即可
$('.form :input').each(function() { $(this).data('formValues', $(this).val()); });
编辑
只是一个建议,您可以将更改事件直接附加到表单
现场演示: http : //jsfiddle.net/jomanlk/kNx8p/1/
$('form :input').change(function(){ $('#log').prepend('Form changed
') });
您可以通过添加计时器并使其每xx秒保存一次来轻松改进。
var $jq= jQuery.noConflict(); $jq(function() { $jq('#extensibleForm').data('serialize',$jq('#extensibleForm').serialize()); }); function formHasChanged(){ if($jq('#extensibleForm').serialize()!=$jq('#extensibleForm').data('serialize')){ alert("Data Changed...."); return (false); } return true; }
你的表格是什么ID?
你只需要让你的选择器更具体:)
而不是$(':input').each(function() {
使用
$('#yourFormId').find(':input').each(function() {
我想你可以用一个类来选择你想要的输入类型。
然后在jQuery中使用它。
$(':input .savethis').each(function() { ...
您可以为表单元素指定id属性(比如theForm
),然后只选择其中的那些输入字段。
然后尝试选择
$(':input', '#theForm')
您可以使用.change()
函数,然后使用$(this)
表示您只想使用正在被更改的字段。
$('#myForm input[type="text"]').change(function() { $(this)... });
编辑:#myForm是您的表单ID,因此您可以定位特定表单。 您甚至可以在该表单中指定type =“text”字段,如我的示例所示。
在这里你可以看到它工作: http : //jsfiddle.net/paska/zNE2C/
$(function(){ setInterval(function() { $("#myForm").checkDirty(); },10000); $("#myForm :input").each(function() { $(this).data('formValues', $(this).val()); }); $.fn.checkDirty = function() { var isDirty = false; $(this).find(':input').each(function () { if($(this).data('formValues') != $(this).val()) { isDirty = true; } }); if(isDirty == true){ alert("isDirty=" + isDirty); } }; });