2012-10-20 13 views
5

Czy istnieje sposób dodania symbolu zastępczego (znacznika zastępczego, a nie "wartości domyślnej" i podobnych podejść), jeśli istnieje pole wprowadzania tekstu z właściwością "wartość" pusty?Jak dodać atrybut zastępczy, jeśli pole "wartość" jest puste

Widziałem wiele podobnych pytań tutaj, ale większość z nich używa wartości domyślnej. Potrzebuję tagów zastępczych i dodatkowo nie mogę w ogóle wpływać na wynik HTML.

To podanym przykładzie wyjście HTML:

<input type="text" value="" name="textbox" id="edit-textbox"> 
+0

http://jsfiddle.net/gT7dv/ –

+0

@RPM To byłoby zbyt proste, prawda? :) Napisałem, że nie mogę wpływać na wynik HTML. To jest kod, który mam i muszę dodać atrybut zastępczy z jQuery – take2

+0

Nie ma to wpływu na wynik HTML w ogóle (z wyjątkiem dodania symbolu zastępczego, który jest tym, czego potrzebujesz, czyż nie?)! Pamiętaj jednak, że jest to dla HTML 5! – Robyflc

Odpowiedz

11

bym sugerował jeden z następujących sposobów:

$('input:text').each(
    function(i,el) { 
     if (!el.value || el.value == '') { 
      el.placeholder = 'placeholdertext'; 
      /* or: 
      el.placeholder = $('label[for=' + el.id + ']').text(); 
      */ 
     } 
    }); 

JS Fiddle demo using el.placeholder = 'placeholdertext'.

JS Fiddle demo using el.placeholder = $('label[for=' + el.id + ']').text().

Albo można użyć tablicę do przechowywania różnych zastępcze:

var placeholders = ['Email address', 'favourite color']; 

$('input:text').each(
    function(i,el) { 
     if (!el.value || el.value == '') { 
      el.placeholder = placeholders[i]; 
     } 
    });​ 

JS Fiddle demo.

Aby określić konkretny zastępczy dla danego elementu:

var placeholders = { 
    'one' : 'Email address', 
    'two' : 'Favourite color' 
}; 

$('input:text').each(
    function(i,el) { 
     if (!el.value || el.value == '') { 
      el.placeholder = placeholders[el.id]; 
     } 
    });​ 

JS Fiddle demo.

Dodany haczyk/fall-back w przypadku, gdy wpis nie istnieje w zastępczych obiektów dla danego input:

var placeholders = { 
    'oe' : 'Email address', // <-- deliberate typo over there 
    'two' : 'Favourite color' 
}; 

$('input:text').each(
    function(i,el) { 
     if (!el.value || el.value == '') { 
      el.placeholder = placeholders[el.id] || ''; 
     } 
    });​ 

JS Fiddle demo.

+0

Próbowałem z obu sugestii, ale to nie działało ... możesz sprawdzić skrzypce tutaj: http://jsfiddle.net/U2YZx – take2

+0

Musisz mieć faktyczny element etykiety do pracy z tym kodem. Nie masz takiego, więc to nie działa. –

+0

Świetne, dzięki! Jednak jedno pytanie dotyczące tego kodu - w jaki sposób odwołujesz się do tego, którego pola tekstowego dotyczy, i. mi. jak mogę wskazać dokładne pole wprowadzania (w tym przypadku #textbox)? – take2

4

Jeśli używasz HTML5 (i należy) jest rodowitym atrybut zastępczy.

<input type="text" value="" placeholder="My placeholder!" name="textbox" id="edit-textbox"> 

Edit

Jak mówiłeś, że nie można edytować kod HTML i trzeba użyć JS, może to pomóc.

$ ('# edit-textbox'). Attr ('symbol zastępczy', 'Mój symbol zastępczy!');

Po raz kolejny, to jest dla HTML 5.

+0

Ten również działa, dziękuję! David był jednak pierwszy, więc przyjąłem jego odpowiedź. – take2

+0

OK! Zwróćmy uwagę, że nasze odpowiedzi są całkowicie różne i prowadzą do różnych rzeczy. Twoje pytanie brzmiało: "Jak dodać atrybut zastępczy", a ustawienie atrybutu wartości (jak w jego odpowiedzi) absolutnie nie jest takie samo. – Robyflc

+0

Sprawdziłem jego kod z firebug, a tekst zastępczy jest wyświetlany jako atrybut zastępczy, więc byłby to odpowiedź na moje pytanie. – take2

0
(function($) { 

    $('#edit-textbox').attr('placeholder','Your placeholder text'); 

})(jQuery); 
Powiązane problemy