通过javascript应用onkeyup并模糊到文本框

时间:2016-06-20 11:10:35

标签: javascript

我有10个文本框,但我想在5个元素上应用onkey和blur事件。

for(var x=3;x<7;x++){
            document.getElementById("txt_"+x).onclick=function(){
            put_contents(document.getElementById("txt_"+x));
        };
            document.getElementById("txt_"+x).onkeyup = function(){
            validateHexa(document.getElementById("txt_"+x));
        }; 
            document.getElementById("txt_"+x).onblur = function(){
            restore_it(document.getElementById("txt_"+x));
        };
}

执行此操作后,当我单击文本框时,不是put_contents始终将“txt_7”作为参数。请建议正确的方法。仅限javascript

1 个答案:

答案 0 :(得分:2)

你可以&#34;分离&#34;通过在循环内创建(nother)闭包来x的值:

for (var x = 3; x < 7; x++) {
    (function(x) {
        document.getElementById("txt_" + x).onclick = function() {
            put_contents(document.getElementById("txt_" + x));
        };
        document.getElementById("txt_" + x).onkeyup = function() {
            validateHexa(document.getElementById("txt_" + x));
        };
        document.getElementById("txt_" + x).onblur = function() {
            restore_it(document.getElementById("txt_" + x));
        };
    })(x);
}

有关详细信息,请参阅How do JavaScript closures work?