我正在开发一个带有多个文本框和相同css类的Web表单。 我想将一个特定的方法绑定到使用该类的所有这些文本框。 以下是我的代码
window.onload = function ()
{
var tObj = document.getElementsByClassName('exa');
for (var i = 0; i < tObj.length; i++) {
tObj[i].onblur(convertAmount(event,this));
}
}
另一个函数'convertAmount()'在
之下function convertAmount(evt, obj) {
if (obj.value != "") {
var num = parseFloat(obj.value);
num = Math.round((num + 0.00001) * 100) / 100;
obj.value = num.toFixed(2);
}
else {
obj.value = "0.00";
}
}
html代码
<div>
<input type="text" id="finalvalue" class="exa"/>
<input type="text" id="grossvalue" class="exa"/>
<div>
当浏览器第一次加载时,这些文本框上只有“0.00”值。但是当我在那些文本框上键入一些值并按Tab键时它不起作用!请帮助这里有什么问题
答案 0 :(得分:0)
我希望link对您有所帮助。
<div>
<input type="text" id="finalvalue" class="exa"/>
<input type="text" id="grossvalue" class="exa"/>
<div>
$(document).ready(function(){
$('.exa').each(function(index,value){
$(this).attr('onblur',convertAmount(event,$(this)))
})
})
function convertAmount(evt, obj) {
if (obj != "") {
$(obj).val('0.00')
}
else {
$(obj).val('0.00')
}
}
答案 1 :(得分:0)
如前所述,您应该指定一个eventHandler
,而不是将其作为回调传递。
所以你的代码是:
tObj[i].onblur = convertAmount.bind(this, event, this);
此外,event是任何eventListener的默认参数,当前对象/元素自动绑定到它,因此上面的代码可以简化为
tObj[i].onblur = convertAmount;
这将绑定上下文,您将获得this
中的所有属性。
注意:您应该使用addEventListener
代替。 onBlur =
将取代之前的所有活动。 addEventListener
会添加另一个。