JQuery - 如何检测提交时的值更改?

时间:2010-11-01 13:45:09

标签: jquery

JQuery中是否有任何函数可用于检测提交时特定字段的值更改?

3 个答案:

答案 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.
})

这只是检查它们是否已被使用,但如果它们实际上是不同的值则不会。如果要将新值与旧值进行比较,那么在页面加载时,您需要创建一个旧值数组,然后在选择更改或表单提交时将它们与新值进行比较。