How do I auto-hide placeholder text upon focus using css or jquery?

后端 未结 26 1749
长情又很酷
长情又很酷 2020-11-28 00:39

This is done automatically for every browser except Chrome.

I\'m guessing I have to specifically target Chrome.

Any solutio

相关标签:
26条回答
  • 2020-11-28 01:11

    Demo is here: jsfiddle

    Try this :

    //auto-hide-placeholder-text-upon-focus
    if(!$.browser.webkit){
    $("input").each(
            function(){
                $(this).data('holder',$(this).attr('placeholder'));
                $(this).focusin(function(){
                    $(this).attr('placeholder','');
                });
                $(this).focusout(function(){
                    $(this).attr('placeholder',$(this).data('holder'));
                });
    
            });
    
    }
    
    0 讨论(0)
  • 2020-11-28 01:13

    Pure CSS Solution (no JS required)

    Building on @Hexodus and @Casey Chu's answers, here is an updated and cross-browser solution that leverages CSS opacity and transitions to fade the placeholder text out. It works for any element that can use placeholders, including textarea and input tags.

    ::-webkit-input-placeholder { opacity: 1; -webkit-transition: opacity .5s; transition: opacity .5s; }  /* Chrome <=56, Safari < 10 */
    :-moz-placeholder { opacity: 1; -moz-transition: opacity .5s; transition: opacity .5s; } /* FF 4-18 */
    ::-moz-placeholder { opacity: 1; -moz-transition: opacity .5s; transition: opacity .5s; } /* FF 19-51 */
    :-ms-input-placeholder { opacity: 1; -ms-transition: opacity .5s; transition: opacity .5s; } /* IE 10+ */
    ::placeholder { opacity: 1; transition: opacity .5s; } /* Modern Browsers */
        
    *:focus::-webkit-input-placeholder { opacity: 0; } /* Chrome <=56, Safari < 10 */
    *:focus:-moz-placeholder { opacity: 0; } /* FF 4-18 */
    *:focus::-moz-placeholder { opacity: 0; } /* FF 19-50 */
    *:focus:-ms-input-placeholder { opacity: 0; } /* IE 10+ */
    *:focus::placeholder { opacity: 0; } /* Modern Browsers */
    <div>
      <div><label for="a">Input:</label></div>
      <input id="a" type="text" placeholder="CSS native fade out this placeholder text on click/focus" size="60">
    </div>
    
    <br>
    
    <div>
      <div><label for="b">Textarea:</label></div>
      <textarea id="b" placeholder="CSS native fade out this placeholder text on click/focus" rows="3"></textarea>
    </div>

    Revisions

    • Edit 1 (2017): Updated to support modern browsers.
    • Edit 2 (2020): Added the runnable Stack Snippet.
    0 讨论(0)
  • 2020-11-28 01:13

    I like the css approach spiced with transitions. On Focus the placeholder fades out ;) Works also for textareas.

    Thanks @Casey Chu for the great idea.

    textarea::-webkit-input-placeholder, input::-webkit-input-placeholder { 
        color: #fff;
        opacity: 0.4;
        transition: opacity 0.5s;
        -webkit-transition: opacity 0.5s; 
    }
    
    textarea:focus::-webkit-input-placeholder, input:focus::-webkit-input-placeholder  { 
        opacity: 0;
    }
    
    0 讨论(0)
  • 2020-11-28 01:13

    This piece of CSS worked for me:

    input:focus::-webkit-input-placeholder {
            color:transparent;
    
    }
    
    0 讨论(0)
  • 2020-11-28 01:13
    $("input[placeholder]").focusin(function () {
        $(this).data('place-holder-text', $(this).attr('placeholder')).attr('placeholder', '');
    })
    .focusout(function () {
        $(this).attr('placeholder', $(this).data('place-holder-text'));
    });
    
    0 讨论(0)
  • 2020-11-28 01:14

    Edit: All browsers support now

    input:focus::placeholder {
      color: transparent;
    }
    <input type="text" placeholder="Type something here!">

    Firefox 15 and IE 10+ also supports this now. To expand on Casey Chu's CSS solution:

    input:focus::-webkit-input-placeholder { color:transparent; }
    input:focus:-moz-placeholder { color:transparent; } /* FF 4-18 */
    input:focus::-moz-placeholder { color:transparent; } /* FF 19+ */
    input:focus:-ms-input-placeholder { color:transparent; } /* IE 10+ */
    
    0 讨论(0)
提交回复
热议问题