jquery clear Eingabestandardwert


77

Wie kann ich den Standardwert eines Eingabeformulars onfocus mit jquery löschen und erneut löschen, wenn die Senden-Taste gedrückt wird?

<html>
        <form method="" action="">
            <input type="text" name="email" value="Email address" class="input" />
            <input type="submit" value="Sign Up" class="button" />
        </form>
</html>

<script>
$(document).ready(function() {
    //hide input text
    $(".input").click(function(){
        if ($('.input').attr('value') == ''){
            $('.input').attr('value') = 'Email address'; alert('1');}
        if  ($('.input').attr('value') == 'Email address'){
            $('.input').attr('value') = ''}
    });
});
</script>

9
Könnten Sie placeholderstattdessen das native Attribut verwenden? Es stehen verschiedene Polyfills zur Verfügung, damit es in älteren Browsern funktioniert.
James Allardice

@ JamesAllardice Warum hast du es nicht als Antwort gepostet? Ich denke, das ist die einfachste und beste Lösung.
Gelees

1
@jelies - Ich habe es nicht als Antwort gepostet, da es zwar das Gleiche tut wie das OP, aber nicht wirklich antwortet, was mit dem Code nicht stimmt. Aber ich stimme zu, es ist definitiv die einfachste Lösung!
James Allardice

Ja, es ist eine gute Antwort und ich habe sie positiv bewertet, aber ich möchte das Platzhalter-Tag nicht verwenden.
Viktor

Antworten:


126

Sie können dies verwenden ..

<body>
    <form method="" action="">
        <input type="text" name="email" class="input" />
        <input type="submit" value="Sign Up" class="button" />
    </form>
</body>

<script>
    $(document).ready(function() {
        $(".input").val("Email Address");
        $(".input").on("focus", function() {
            $(".input").val("");
        });
        $(".button").on("click", function(event) {
            $(".input").val("");
        });
    });
</script>

Wenn Sie von Ihrem eigenen Code sprechen, besteht das Problem darin, dass die attr-API von jquery von festgelegt wird

$('.input').attr('value','Email Adress');

und nicht wie du es getan hast:

$('.input').attr('value') = 'Email address';

Ich habe beschlossen, diese Antwort zu verwenden, da sie am elegantesten erscheint.
viktor

1
Ich bin neu bei jquery. Dies ist meine erste akzeptierte Antwort hier und die dritte insgesamt (wie Sie wahrscheinlich anhand meiner Reputationspunkte ableiten können)
Kaustubh

Warum $('.input').removeAttr('value')funktioniert das nicht?
Almino Melo

16
$(document).ready(function() {
  //...
//clear on focus
$('.input').focus(function() {
    $('.input').val("");
});
   //clear when submitted
$('.button').click(function() {
    $('.input').val("");
});

});


Das ist falsch $('.input').attr('value') = 'Email address';, sollte sein, $('.input').attr('value', 'Email address');wie wird diese Antwort positiv bewertet?
Toni Michel Caubet

1
@ToniMichelCaubet Die Antwort bearbeitet, danke. Dieser Code hatte sowieso nichts mit der Frage zu tun. Ich habe es aus dem Code von topicstarter kopiert.
Sasha

8

Wenn Sie sich nicht wirklich Sorgen um ältere Browser machen, können Sie das neue HTML5- placeholderAttribut wie folgt verwenden :

<input type="text" name="email" placeholder="Email address" class="input" />

2
"Es sei denn, Sie machen sich wirklich Sorgen um ältere Browser" ... Sie können das placeholderAttribut mehrfach ausfüllen , damit es auch in älteren Browsern funktioniert. Siehe meinen Kommentar zu der Frage und andere Beispiele im Modernizr-Wiki .
James Allardice

Ja, das stimmt, oder Sie könnten einfach ein bisschen JQuery schreiben, um das Attribut selbst zu ziehen, wenn Sie daran interessiert sind.
DJ Forth

7
$('.input').on('focus', function(){
    $(this).val('');
});

$('[type="submit"]').on('click', function(){
    $('.input').val('');
});

3

Versuch das:

  var defaultEmailNews = "Email address";
  $('input[name=email]').focus(function() {
    if($(this).val() == defaultEmailNews) $(this).val("");
  });

  $('input[name=email]').focusout(function() {
    if($(this).val() == "") $(this).val(defaultEmailNews);
  });

2

Nur eine Abkürzung

$(document).ready(function() {
    $(".input").val("Email Address");
        $(".input").on("focus click", function(){
            $(this).val("");
        });
    });
</script>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.