2

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 (フォーカスのヒントを非表示にせず、入力フィールドにテキストを追加するだけです)

これを修正する方法。このスクリプトを強制的に戻るボタンでリロードするにはどうすればよいですか? ありがとう

4

1 に答える 1

1

私はついにjquery.hint.jswitchにブラウザの戻るボタンを使用するための修正が含まれていることを発見しました。だからここにリンクがあります: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);
于 2013-02-26T13:15:18.073 に答える