Событие onChange не запускается для текстового поля в Chrome - PullRequest
0 голосов
/ 15 июня 2011

У меня есть следующий код, чтобы связать некоторую логику проверки, которая будет запущена, когда пользователь обновляет значение текстового поля. Я ожидаю, что код //Do some stuff here будет выполняться, когда любое из текстовых полей неизбежно потеряет фокус.

function RegisterHoursValidationHandlers() {
    $('.topic-frame-body input[type=text]').live('change', function () {
        //Do some stuff here
    });
}

Это работает точно так, как я ожидаю в IE, Firefox и Safari. Тем не менее, событие никогда не происходит в Chrome, и я понятия не имею, почему.

ОБНОВЛЕНИЕ: Мне удалось получить желаемый эффект, изменив 'change' на 'blur'. Хотя это все еще не объясняет, почему это не работает с 'change'.

Ответы [ 4 ]

2 голосов
/ 15 июня 2011

Нет никакой известной причуды в отношении хрома . (событие изменения поддерживается во всех браузерах)

Пример с демонстрацией в реальном времени работы с динамическим контентом.

Проверьте это здесь :

Существует некоторая информация или предположение, делающее это неразрешимым.

ОБНОВЛЕНИЕ : Если оно работает, когда вы меняете его на размытие, возможно, вы перезаписываете предыдущее событие или функцию. Изменив его на размытие, все, что перезаписывает, больше не будет, потому что это другое событие .

Это также объясняет, почему вы не видите никаких ошибок. (имейте в виду, я считаю, что jQuery будет связывать события, связанные с теми же элементами, но live () - это особый случай, но этот факт может указывать на то, что это функция, а не привязка события)

0 голосов
/ 15 июня 2011

Попробуйте:

function RegisterHoursValidationHandlers() {
    $(".topic-frame-body input[type='text']").live('change', function () {
        //Do some stuff here
    });
}

С кавычками вокруг текста, как у меня.Стоит попробовать.

Или попробуйте:

$(".topic-frame-body input:text").live();

Суть в том, я думаю, проблема в деталях того, как вы нацеливаетесь на поле ввода, а не в методе.

0 голосов
/ 15 июня 2011

Какую версию Jquery вы используете?

Я не вижу проблемы самостоятельно, но .live не поддерживает событие "change" до jquery 1.4 +

0 голосов
/ 15 июня 2011

Попробуйте использовать .delegate () вместо http://api.jquery.com/delegate/

Я пробовал код на FF и Chrome - http://jsfiddle.net/B3aRy/ - Работало на обоих.Так может быть проблема в другом месте вашего кода?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...