2012-03-20 3 views
0

Я знаю, как проверить, один текстовое поле изменено, но как насчет, если любое изменилось? Любые идеи?Если текстовое поле на странице изменено, функция звонка

+0

Вы пробовали что-нибудь? – talnicolas

+0

пытался использовать jquery для этого? –

+0

использовать цикл foreach – Brian

ответ

2

С JQuery:

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

    // put your code here 

}); 

EDIT:

Если вы новичок в jQuery или не знают об этом, это основа JavaScript. Нажмите here, чтобы узнать о его функции change().

+0

делает .change() также распознает, если вы вставляете текст с помощью щелчка правой кнопкой мыши? –

+0

@EvilP Я так считаю. Я просто протестировал его здесь, и это сработало: http://jsfiddle.net/uBqx7/ –

+3

Поскольку OP не упоминал jQuery или тег с jQuery, вы должны хотя бы предоставить ссылку на сайт jQuery и, надеюсь, предоставить не-jQuery ответ. –

0

Вы можете использовать некоторые jQuery.

Укажите класс текстового поля, например. class="onchange" затем добавить некоторые JQuery

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

Таким образом, любое текстовое поле с классом onchange поднимет событие JQuery change.

2

следующий код добавит прослушиватели событий к всем входным тегам на странице с типом, равным «text».

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

спасибо, что не используете jQuery. –

+1

Я бы предложил использовать 'onchange', а не' onclick', потому что 'onclick' предупреждал бы * до того, как * было сделано какое-либо изменение, и не будет проверять, было ли сделано изменение * после события click. –

+0

sry, моя ошибка; Я случайно написал onclick – Tom

0

Loop over document.getElemenetsByTagName("input"). Для каждого элемента убедитесь, что type == "text" и, если да, присоедините прослушиватель событий.

JQuery делает это в строке: $("input[type=text]").on("change", function() { ... })

Если вы хотите сделать это для текстовых полей, созданных динамически после времени загрузки, используйте $("input[type=text]").live("change", function() { ... })

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. 
    } 
} 

Таким образом, вы добавить только одно события, которое будет проверять каждые onchange события в ваших делах. Просто проверьте, и все готово.

Это более эффективный способ, чем добавление обработчика событий для каждого элемента input.

PS: как JQuery будет выглядеть так:

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

Как вы можете видеть, JQuery на самом деле не нужны для этой простой задачи :-).

+0

, который использует id 'div' -.- – Raynos

+0

Просто для примера, обычный! Но я отредактировал для вас :) –