2013-10-10 1 views
4

У меня есть поле ввода с привязанным к нему событием input (через jQuery). Это событие должно запускаться каждый раз, когда изменяется входное значение. Я добавил заполнитель, чтобы сообщить пользователю, для чего это поле ввода.Событие ввода jQuery, запущенное на placeholder в IE

Если пользователь нажимает на это поле ввода, то событие input НЕ должно быть запущено (значение фактически не изменяется, просто местозаполнитель исчезает). Он отлично работает в Firefox или Chrome, но не в IE.

Как я могу избежать такого поведения?

Для лучшего понимания моей проблемы на jsfiddler

+0

в какой версии IE это происходит? – Olrac

+0

@OLRAC в IE10 работает под управлением Windows 8 – lionheart98

+0

, так что вы говорите, что ваша проблема - это местозаполнитель? – Olrac

ответ

1

Один из способов защититься от проблемы, сохраняя старое значение вашего поля и проверку против него перед выполнением реальной функции вы хотите выполнить в вашем input обработчика , Вот как я исправил это в одном из моих приложений.

Например:

$(document).ready(function() { 
    var $input = $("#input"); 
    var $msg = $("#msg"); 
    var old_value = $input.val(); 
    $input.on("input", function() { 
     var new_value = $input.val(); 
     if (new_value !== old_value) { 
      // The actual work we want to perform when the field *really* changes. 
      $msg.text(new_value.length); 
      old_value = new_value; 
     } 
    }); 
}); 

Это предотвращает действует, когда поле не меняется.

+0

Хорошее обходное решение - работает, как ожидалось. благодаря! – lionheart98

+0

Как защититься от этого события ввода предотвращает другие события? У меня есть ссылка с кликом, которая останавливается этим событием ввода :(Пользователи жалуются, что им нужно дважды щелкнуть в IE, пока он работает нормально в других браузерах. – Azimuth

+0

@ Азимут У меня никогда не было проблемы с игнорированием кликов .Какой код в ответе только прослушивает события 'input', и это не влияет на то, как обрабатываются события' click'. Похоже, что у вас может быть материал для нового вопроса. – Louis

-1

попробуйте добавить это к входному событию:

if($(this).val() == $(this).get(0).defaultValue) return; 

 Смежные вопросы

  • Нет связанных вопросов^_^