绑定javascript函数来输入窗口加载控件

时间:2016-07-29 06:37:21

标签: javascript html

我正在开发一个带有多个文本框和相同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键时它不起作用!请帮助这里有什么问题

2 个答案:

答案 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中的所有属性。

Sample Fiddle

注意:您应该使用addEventListener代替。 onBlur =将取代之前的所有活动。 addEventListener会添加另一个。

Sample Fiddle