2010-08-10 15 views
10

Jaki jest najlepszy sposób, aby pole tekstowe wyświetlające instrukcje, co należy wprowadzić w tym polu na szaro. Po ustawieniu ostrości na tym polu wejściowym szary tekst instrukcji znika, a tekst wejściowy jest czarny. Jeśli usuniesz tekst wejściowy i ustawisz ostrość z dala od tego wejścia, szary tekst instrukcji pojawi się ponownie.Pola wprowadzania tekstu JavaScript, które wyświetlają tekst instrukcji (symbol zastępczy).

Próbowałem zaimplementować to z jQuery, ale dostaję różnego rodzaju dziwne problemy z różnymi przeglądarkami. Czasami po powrocie do ekranu tekst instrukcji staje się czarny i już nie znika, takie problemy.

Czy istnieje standardowa biblioteka javascript dla tego? Nie mogę znaleźć żadnego!

Och, a tekst instrukcji nie może być obrazem, ponieważ musi być dostępny w różnych językach, w zależności od preferencji językowych przeglądarki.

Odpowiedz

7

Można użyć wtyczki znaku wodnego w jquery.use this odnośnik.

przykład

$(this).Watermark("your instructions"); 
+0

To jest idealne, dzięki! –

-2
<input type="text" name="myText" value="Enter Name" style="color:gray" onfocus="this.value=''"> 
+2

ten zdobywa większość wymagań w pytaniu i ma problemy z dostępnością. – Quentin

+1

To nie zadziała. Ponieważ po skupieniu się na tym polu tekst instrukcji znika na zawsze –

+0

Przepraszam, chłopaki. Ja jednak w niewłaściwy sposób. – ppshein

0

Wprowadź dane wejściowe jako przezroczyste i umieść tekst za nim. Sprawdź wartość onload, onblur, aby zdecydować, czy tekst ma być widoczny, czy nie. Spraw, by był niewidoczny.

Na przykład: http://dorward.me.uk/tmp/label-work/example.html (po prostu trzeba projektować etykiety i wejście z różnych kolorów na pierwszym planie)

+0

Uwielbiam ten pomysł. Tekst instrukcji jest również indeksowalny, co ma sens. Poszedłem jednak z wtyczką jQuery do znaków wodnych, ponieważ było to tak proste i sprawiło, że html był tak czysty. Z tego co wiem, zaimplementowali to z tym samym mechanizmem .. –

2

html

<input type="text" id="user" class="textbox default" value="Enter login name"> 
<input type="password" id="pass" class="textbox"> 

jQuery

$(function(){ 
    $('.textbox').focus(function(){ 
    if (this.value == this.defaultValue) { 
     this.value = ''; 
     $(this).removeClass('default'); 
    }; 
    }).blur(function(){ 
    if (this.value == '') { 
     this.value = this.defaultValue; 
     $(this).addClass('default'); 
    }; 
    });​ 
}); 

demo

21

Do tego nie potrzebujesz javascript.

HTML5:

<input type="text" id="email" name="email" placeholder="Enter your email address"> 

To działa w nowoczesnych przeglądarek. Jeśli dodasz plik modernizr.js do swojej strony, będzie działał we wszystkich przeglądarkach.

+0

Jak rozumiem, modernizr wykrywa tylko, czy w aktualnej przeglądarce istnieje funkcja html5, jak symbol zastępczy. Od Ciebie zależy zapewnienie mechanizmu awaryjnego. Biblioteka jquery powyżej, którą wybrałem jako poprawną odpowiedź, faktycznie używa atrybutu zastępczego html5 (jeśli chcesz) i wraca do mechanizmu javascript. –

0

kod zastępczy - nazwa

nazwa zmiennej jest

var name=$("#con-name"); 
var nameval="Enter your name"; 



name.val(nameval); 
name.focus(function(){ 
    if (this.value == nameval) { 
     this.value = ''; 
    }; 
    }).blur(function(){ 
     if (this.value == '') {  
     this.value = nameval; 
    }; 
}); 
//submit to clear code 
$("#sub_con_page").click(function() { 
    if(name.val()==nameval) { 
     name.val(""); 
    } 
}); 

DEMO LINK

Powiązane problemy