Измените ваш setTimeout следующим образом:
setTimeout(beforemouseout ,3000);
В противном случае он ищет beforemouseout
в глобальном контексте, и если ваш код там отсутствует (он внутри / ограничен)к другому закрытию любого вида), это не найдет это.Здесь я предполагаю, что это обработчик ready
, потому что вы размещаете HTML прямо рядом с ним, то есть вы берете фрагменты.
С общей точки зрения, никогда не передавайте строку в setTimeout()
илиsetInterval()
Если вы можете избежать этого, это приведет ко многим нежелательным побочным эффектам ... как этот.Вместо этого передайте прямую ссылку, как у меня выше, чтобы быть полностью явной и понятной ... заставить ее работать:)
Изменить (для комментариев к вопросу) : кажется, чтовы на самом деле после этого все еще немного отличается от того, что написано.Из того, что я понял, вы хотите отложить до восстановления значения по умолчанию <input>
.Есть несколько способов сделать это, вот один:
function beforemouseout() {
if ($(this).val() == '') {
$(this).val($(this).attr('title'));
}
}
$(".other").click(function() {
$(this).val('').mouseout(function() {
setTimeout($.proxy(beforemouseout, this), 3000);
});
});
Вы можете попробовать это здесь .