如果页面上的任何文本框已更改,请调用函数

时间:2012-03-20 16:37:54

标签: javascript

我知道如何检查一个文本框是否已更改,但是如果任何文本框被更改了怎么办? 有任何想法吗?

5 个答案:

答案 0 :(得分:3)

以下代码将onchange事件侦听器附加到页面上类型等于“text”的所有输入标记。

var textboxes = document.getElementsByTagName("input");
for(var i = 0; i < textboxes.length; i++) {
    if(textboxes[i].type == "text") {
        textboxes[i].onchange = function() {alert("changed");};
    }
}

答案 1 :(得分:2)

使用jQuery:

$("input[type=text]").change(function() {

    // put your code here

});

编辑:

如果您是jQuery的新用户或者不了解它,那么它就是一个JavaScript框架。点击here了解change()功能。

答案 2 :(得分:2)

通常,您将所有文本框都放在一个div中。使用event bubbling

// Add an event handler on your whole div
document.getElementById('div-with-your-checkboxes').onchange = function(e) {
    // Cross browser check
    var evt = e || window.event
    // Get the element that triggered the event
    var target = evt.target || evt.srcElement
    // Check if it is an INPUT element
    if (target.tagName === 'INPUT') {
        // Your code in here.
    }
}

这样,您只会添加一个事件来检查div中的每个onchange事件。只需一个简单的检查就可以了。

这比为每个input元素添加事件处理程序更有效。

PS:jQuery的方式是这样的:

$('#div-with-your-checkboxes').change(function(e) {
    if ($(e.target).tagName === 'INPUT') {
        // Your code in here.
    }
})

正如您所看到的,这个简单的任务并不需要jQuery: - )。

答案 3 :(得分:0)

你可以使用一些jQuery。

给文本框一个类,例如class="onchange"然后添加一些jQuery

$(function(){
   $('.onchange').change(function(){
      // your code in here.
   });
});

这样,任何带有onchange类的文本框都会引发jQuery change事件。

答案 4 :(得分:0)

循环document.getElemenetsByTagName("input")。对于每个元素,请验证type ==“text”,如果是,请附加事件侦听器。

JQuery排成一行:$("input[type=text]").on("change", function() { ... })

如果要对加载时间后动态创建的文本框执行此操作,请使用$("input[type=text]").live("change", function() { ... })