我知道如何检查一个文本框是否已更改,但是如果任何文本框被更改了怎么办? 有任何想法吗?
答案 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() { ... })