1

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

大多数表单字段都被禁用,并且它们的值是使用非禁用字段的值计算的。部分计算涉及将字段值保存到数据库的 AJAX 调用。

我可以使用以下代码:

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

但这将涉及对每个可以更改其值的字段进行重复。

我也可以这样做:

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

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

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

4

7 回答 7

2

你不能做这样的事情:

$('.genericFieldClass').change(function() {
    calculateThings();
});
于 2013-08-06T11:05:07.027 回答
1

您可以执行以下操作:

$("select").change(function () { 
    var changedSelectId = $(this).attr("id");
});
于 2013-08-06T11:11:01.857 回答
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();
    });
});
于 2013-08-06T11:08:35.177 回答
0

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

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

如果你有一个select刚刚添加form select的内容:

$('form input, form select').change(function() {
    calculateThings();
});
于 2013-08-06T11:05:21.617 回答
0

您不能这样做,因为更改事件不会传播

changeinput您可以为所有可以更改的输入元素添加一个类

$('.changeinput').change(function() {
    calculateThings();
});
于 2013-08-06T11:05:27.420 回答
0

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

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

然后,您可以将应该触发计算的元素赋予类“动态字段”,然后就完成了。

于 2013-08-06T11:05:59.940 回答
0

这会有帮助吗?

$('input,select,textarea').change(function(){
   var elementChanged = $(this).attr("id");
   //ajax call you wanna do and whatever else
});
于 2013-08-06T11:08:17.450 回答