我在页面上有3个下拉菜单的3个引用,并且每次更改后,我都想运行一个JavaScript函数,称为 validateForm();
我的代码如下:
jQuery(document).ready(function() {
var drpSupplier = document.getElementById('supplier');
var drpChargeRate = document.getElementById('formElementChargeRate');
var drpIDSEmail = document.getElementById('formElementEmailIDS');
var formLevel2DDs = new Array();
formLevel2DDs.push(drpSupplier);
formLevel2DDs.push(drpChargeRate);
formLevel2DDs.push(drpIDSEmail);
formLevel2DDs.each(function() {
$(this).change(function() {
validateForm()
});
});
});
但是这段代码给了我错误:
TypeError:formLevel2DDs.each不是一个函数
我正在使用jQuery 1.8.3版(这是旧版系统)。
each
数组上没有任何功能。
正如安东(Anton)在评论中指出的那样,您根本不需要each
做什么。请参阅下面的折叠。
但是,如果需要each
,您有三个选择:
将数组包装在jQuery实例中,然后使用jQuery的each
:$(formLevel2DDs).each(function(index, entry) { ... });
使用jQuery的$.each
:$.each(formLevel2DDs, function(index, entry) { ... });
请注意,这与上面的功能不同。
使用forEach
(MDN | Spec):formLevel2DDs.forEach(function(entry, index, array) { ... });
请注意,这forEach
是ECMAScript5的新功能。所有现代的浏览器都具有它,但对于较旧的浏览器(例如IE8),则需要使用填充程序/填充。还要注意,回调参数的顺序与上面的两个选项都不相同。
但就Anton而言,您可以更简单地做到这一点:
getElementById
在这种情况下,没有理由直接使用它,它不是处于紧密循环中,也不是什么,所以:
jQuery(document).ready(function() {
$("#supplier, #formElementChargeRate, #formElementEmailIDS").change(validateForm);
});
请注意,我还从处删除了wrapper函数validateForm
。如果validateForm
具有返回值,则可能需要添加回去,并且您不希望jQuery使用该返回值(特别是:如果返回false
了该值,则jQuery将停止传播并阻止change
事件的默认操作)。
如果您真的想使用这些变量直接访问DOM元素:
jQuery(document).ready(function() {
var drpSupplier, drpChargeRate, drpIDSEmail;
var formLevel2DDs = [
drpSupplier = document.getElementById('supplier'),
drpChargeRate = document.getElementById('formElementChargeRate'),
drpIDSEmail = document.getElementById('formElementEmailIDS')
];
$(formLevel2DDs).change(validateForm);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句