Javascript 将旧值与表单的新值进行比较
我有一个表单,有几个字段,其中一个是“counter”,它会不断变化。编辑表单时,我需要跟踪某些字段是否更改,并将“计数器”字段设置为提交时修改的字段数。例如,如果计数器的旧值为10,并且修改了字段1、字段2和字段3,则表单提交计数器应增加到13 下面是我试图做的只是一个领域,但它不能正常工作。我不仅需要检查一个字段,还需要检查其他几个字段。感谢您的帮助。谢谢Javascript 将旧值与表单的新值进行比较,javascript,jquery,Javascript,Jquery,我有一个表单,有几个字段,其中一个是“counter”,它会不断变化。编辑表单时,我需要跟踪某些字段是否更改,并将“计数器”字段设置为提交时修改的字段数。例如,如果计数器的旧值为10,并且修改了字段1、字段2和字段3,则表单提交计数器应增加到13 下面是我试图做的只是一个领域,但它不能正常工作。我不仅需要检查一个字段,还需要检查其他几个字段。感谢您的帮助。谢谢 $(document).ready(function(){ var oldVal = getOldValue("field1")
$(document).ready(function(){
var oldVal = getOldValue("field1");
var oldCounter = parseInt(getOldValue("Counter"));
var curCounter;
$('field1').change(function(){
var newVal= $(this).val();
if(oldVal.val() == newVal.val()){
curCounter = oldCounter +1;
setField("Counter", parseInt(curCounter));
}
});
});
您的
if
语句不正确。当值发生更改(.change()
)时,它会触发,但您可以通过if(oldVal.val()==newVal.val())
另外,.val()
是jQuery对象的一个方法,因此除非函数getOldValue()
返回一个jQuery对象,否则您的if
语句可能不会执行您期望它执行的操作
我要做的是将表单字段的旧值存储在表单字段的data
属性中,这样您就可以从.change()
事件中轻松访问它,例如:
$(document).ready(function(){
var oldCounter = parseInt(getOldValue("Counter"), 10); // use the second argument '10' here or you might get strange results
var curCounter = oldCounter;
$('.field').each(function() {
// store the old value
$(this).data("oldValue", getOldValue($(this).attr("id")));
})
.change(function(){
// compare values, increase counter if it is different than the original value
if($(this).data("oldValue") != $(this).val()) {
curCounter++;
setField("Counter", curCounter);
}
});
});
未经测试的代码,但您了解要点,希望这有助于我注意到的三件事
*。您要检查newVal的值两次,它应该是
var newVal=$(this.val();
如果(oldVal==newVal)。。。。。
*。对于oldValue变量,只需执行var oldVal=$('#filed1_id').val()代码>这将更简单,并将获得所需的值,而不是对象,这更容易处理
*。您说您需要在提交时检查更改,但您正在检查更改,将其更改为,这意味着您将在需要时更频繁地检查
再说一次,知道getOldValue的作用会很好。
祝你好运我假设你想知道用户在提交表单时是否修改了任何字段。最容易使用它来跟踪哪些字段已从其原始值更改。正如其他海报所提到的,您的代码调用是冗余的.val()
,错误地使用=
而不是=代码>,并且可能未正确使用jQuery对象
这把小提琴应该解决你的问题: