2013-02-12 2 views
2

Я использую jquery.hint.js. На странице загрузки всегда хорошо, но когда я использую обратную кнопку браузера, фокус не скрывает намека.Фокус не скрывает подсказки на кнопке браузера (jquery.hint.js)

jQuery.fn.hint = function (blurClass) { 
    if (!blurClass) { 
     blurClass = 'blur'; 
    } 

    return this.each(function() { 
     // get jQuery version of 'this' 
     var $input = jQuery(this), 

     // capture the rest of the variable to allow for reuse 
      title = $input.attr('title'), 
      $form = jQuery(this.form), 
      $win = jQuery(window); 

     function remove() { 
      if ($input.val() === title && $input.hasClass(blurClass)) { 
       $input.val('').removeClass(blurClass); 
      } 
     } 

     // only apply logic if the element has the attribute 
     if (title) { 
      // on blur, set value to title attr if text is blank 
      $input.blur(function() { 
       if (this.value === '') { 
        $input.val(title).addClass(blurClass); 
       } 
      }).focus(remove).blur(); // now change all inputs to title 

      // clear the pre-defined text when form is submitted 
      $form.submit(remove); 
      $win.unload(remove); // handles Firefox's autocomplete 
     } 
    }); 
}; 

пример на нормальной загрузке страницы: http://prntscr.com/sik0d пример после использования назад кнопки браузера: http://prntscr.com/sikap (дозы не скрывают намек на фокус, просто добавить текст в поле ввода)

, как это исправить. Как заставить этот скрипт перезагрузить кнопку «Назад»? спасибо

ответ

1

Наконец-то я обнаружил, что jquery.hint.js включает исправление для использования кнопки «Назад» браузера. Так вот ссылка: https://gist.github.com/madmanlear/1723896

JavaScript:

(function ($) { 

$.fn.hint = function (blurClass) { 
    if (!blurClass) blurClass = 'blur'; 

    return this.each(function() { 
     var $input = $(this), 
      title = $input.attr('placeholder'), 
      $form = $(this.form), 
      $win = $(window); 

     function remove() { 
      if ($input.val() === title) { 
       $input.val('').removeClass(blurClass); 
      } 
     } 

     // only apply logic if the element has the attribute 
     if (title) { 
      // on blur, set value to title attr if text is blank 

      $input.blur(function() { 
       if (this.value === '' || this.value == title) { 
        $input.val(title).addClass(blurClass); 
       } 
      }).focus(remove).blur(); // now change all inputs to title 

      // clear the pre-defined text when form is submitted 
      $form.submit(remove); 
      $win.unload(remove); // handles Firefox's autocomplete 
     } 
    }); 
}; 

})(jQuery); 
Смежные вопросы