JQuery中是否有任何函数可用于检测提交时特定字段的值更改?
答案 0 :(得分:2)
有change()
。
$('#fieldID').change(
function(){
// do stuff
}
);
答案 1 :(得分:1)
你可以这样做:
// document ready
$(function () {
$('form')
// we need to save values from all inputs with class 'confirm'
.find(':input.confirm')
.each(function () {
// save old value in each input's data cache
$(this).data('oldValue', $(this).val())
})
.end()
.submit(function (ev) {
var $changed = $(':input.confirm', this).filter(function () {
return $(this).val() != $(this).data('oldValue')
});
// $changed object contains only changed inputs
// so you can do whatever you want with them
// in your case, display confirmation message
var message = ['Following values have changed! Are you sure you want to save them?\n'];
$changed.each(function () {
message.push(this.name + ' = ' + $(this).val());
});
return window.confirm(message.join('\n'));
});
});
现在,在您的表单中,将class="confirm"
放在您需要跟踪更改的所有元素上,脚本将询问您是否要提交新值(还显示已更改的内容以及在哪些字段中)。
答案 2 :(得分:0)
这是完全可能的。 首先,您需要在每个选择或输入上使用更改事件,以查看它是否已更改并设置标志(此标志需要是全局的:
var flag = 0;
$('select').change(function(){ flag = 1; } );
然后,您需要在表单上添加一个提交事件,以查看是否已设置标志,然后执行其他操作。如果您从提交事件返回false,则表单将不会被发送。
$('form').submit(function(){
if (flag == 0) return false; // If the select box has not been changed to not submit the form.
})
这只是检查它们是否已被使用,但如果它们实际上是不同的值则不会。如果要将新值与旧值进行比较,那么在页面加载时,您需要创建一个旧值数组,然后在选择更改或表单提交时将它们与新值进行比较。