使用jQuery检测表单更改时的特定字段ID

时间:2013-08-06 11:02:25

标签: jquery forms

我有一个简单的表单,目前使用jQuery根据用户表单输入进行一些动态计算。

禁用大多数表单字段,并使用未禁用字段的值计算其值。部分计算涉及将字段值保存到数据库的AJAX调用。

我可以使用以下代码:

$('#specific-field').change(function() {
    calculateThings();
});

但这将涉及重复每个可以改变其值的字段。

我也可以这样做:

$('form').change(function() {
    calculateThings();
});

但是,每次进行更改时,我都必须保存并更新每个数据库字段,此时一次只有一个字段可能包含不同的值。

有没有办法合并这两种可能性,我可以在表单级别监控更改,然后检测表单中哪些特定字段已更改?

7 个答案:

答案 0 :(得分:2)

你不能做类似的事情:

$('.genericFieldClass').change(function() {
    calculateThings();
});

答案 1 :(得分:1)

您可以执行以下操作:

$("select").change(function () { 
    var changedSelectId = $(this).attr("id");
});

答案 2 :(得分:0)

您可以使用以下方式获取表单中的所有input字段:

$('form input').change(function() {
    calculateThings();
});

如果您有select,只需在其中添加form select

$('form input, form select').change(function() {
    calculateThings();
});

答案 3 :(得分:0)

您无法执行此操作,因为更改事件does not propagate

您可以将类似changeinput的类添加到所有可以更改的输入元素

$('.changeinput').change(function() {
    calculateThings();
});

答案 4 :(得分:0)

类的设计允许多个元素应用相同的功能。考虑到这一点,试试这个:

$('.dynamic-field').change(function() {
    calculateThings();
});

然后你可以给那些应该触发计算的元素'动态字段',然后你就完成了。

答案 5 :(得分:0)

这会有帮助吗?

$('input,select,textarea').change(function(){
   var elementChanged = $(this).attr("id");
   //ajax call you wanna do and whatever else
});

答案 6 :(得分:0)

如果您知道要注意的输入类型,请在表单元素中添加一个类或使用子选择器。如果你使用一个类:

<input type="" class="myClass" />
<input type="" class="myClass" />
<input type="" class="myClass" />
<input type="" class="myClass" />

在jquery中:

$('.myClass').change(function() {
   calculateThings();
});

或者不使用课程:

$('form').children("input[type='text']").each(function(){             // Or whatever input type you want to look out for
    $(this).change(function(){
       calculatethings();
    });
});