我有一个简单的表单,目前使用jQuery根据用户表单输入进行一些动态计算。
禁用大多数表单字段,并使用未禁用字段的值计算其值。部分计算涉及将字段值保存到数据库的AJAX调用。
我可以使用以下代码:
$('#specific-field').change(function() {
calculateThings();
});
但这将涉及重复每个可以改变其值的字段。
我也可以这样做:
$('form').change(function() {
calculateThings();
});
但是,每次进行更改时,我都必须保存并更新每个数据库字段,此时一次只有一个字段可能包含不同的值。
有没有办法合并这两种可能性,我可以在表单级别监控更改,然后检测表单中哪些特定字段已更改?
答案 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();
});
});