0

サポートしていないブラウザーの HTML5 プレースホルダーをエミュレートするために私が見つけたすべての例はfocusでトリガーされますが、これはサポートしているブラウザーでどのように機能するかではありません(そしてちょっとひどいです)。on(' keypress ')をトリガーする方が良いでしょう (私見)が、それは貼り付け操作に対応していないため、(または) キー押しおよび/または貼り付けイベントの組み合わせでトリガーしたいと思います。

jQuery(input).on('keypress', function()
{/*works*/}

jQuery(input).on('paste', function()
{/*works*/}

しかし、1 つの関数で 2 つを連携させることはできません。例えば

jQuery(input).on('keypress, paste', function()
{/*just doesn't work WTF? */}

(FWIW)、これが私が持っているものです... jsFiddle

// Add placeholder browser support as needed.
jQuery(function()
{   if(!ph_support()) alt_placeholder();
});
function alt_placeholder()
{   jQuery('input[placeholder]').each(function()
    {   //Assign to those input elements that have 'placeholder' attribute
        var input = jQuery(this);
        jQuery(input).val(input.attr('placeholder')).addClass('hasPlaceholder');
        jQuery(input).on('paste', function()
        {   input.removeClass('hasPlaceholder');
            if (input.val() == input.attr('placeholder'))
                input.val('');
        });
        jQuery(input).on('keypress', function()
        {   input.removeClass('hasPlaceholder');
            if (input.val() == input.attr('placeholder'))
                input.val('');
        });
        jQuery(input).blur(function()
        {   if (input.val() == '' || input.val() == input.attr('placeholder'))
                input.val(input.attr('placeholder')).addClass('hasPlaceholder');
        });
    });
}
function ph_support()
{   var test = document.createElement('input');
    if('placeholder' in test) return true;
    else return false;
}
4

1 に答える 1