2012-10-11 22 views
5

Co mam

Mam pole tekstowe, dopłata z których nie mogę bezpośrednio edytować:Nie można wyłączyć onclick/onblur wartości w polu tekstowym za pomocą jQuery

<input type="text" name="email" value="Email Address" id="subscribe-field" 
onclick="if (this.value == 'Email Address') { this.value = ''; }" 
onblur="if (this.value == '') { this.value = 'Email Address'; }"> 

Co muszę

Potrzebuję, aby wartość pola tekstowego była pusta, niezależnie od tego, czy pole tekstowe zostało kliknięte, czy nie kliknięto lub kliknięto.

Co Próbowałem

mogę wyłączyć wartość:

$('#subscribe-field').val(''); 

Próbowałem wyłączyć onclick i onblur wartości:

$('#subscribe-field').click(function() { return false; }); 
$('#subscribe-field').off('click'); 
$('#subscribe-field').unbind('click'); 

... jednak, wartość pojawi się ponownie po kliknięciu poza polem tekstowym.

Moje pytanie

Jak usunąć wartość onblur z powyższego mark-up?

+4

+ 1 na starannie ułożone pytanie. – Nick

+0

@OptimusPrime - Podziękowanie mile widziane, dzięki. –

Odpowiedz

6

spróbować w ten sposób:

$('#subscribe-field').removeAttr('onclick');

$('#subscribe-field').removeAttr('onblur');

+0

Ta metoda działa. Dzięki. –

+2

Jsfiddle również to udowodnić: http://jsfiddle.net/8pAre/ (chciałem to sprawdzić przed upvoting) – Chris

+0

@DominorNovus cieszę się z pomocy :) –

1

Powinieneś usunąć wbudowany JavaScript. jsfiddle. Użycie numeru jQuery.one spowoduje, że zdarzenie fokusa zostanie wywołane tylko raz.

<input type="text" name="email" value="Email Address" id="subscribe-field" /> 



$('#subscribe-field').one('focus',function() { 
      this.value = ''; 
     return false; 
}); 

UPDATE: Jak sugeruje mahmoud, należy usunąć atrybut onClick i onblur jeśli nie można edytować html.

off i unbind będzie rozpiąć jQuery click zdarzenie nie inline onclick i return false również nie rozwiąże problemu jako inline onClick zostanie sprawdzony jako pierwszy.

+1

"Mam pole tekstowe, którego znacznik nie mogę edytować bezpośrednio", więc nie może usunąć wbudowanego javascriptu. – Chris

+0

@Shusl - Dzięki, ale z jakiegoś powodu ten kod nie zapobiegł ponownemu wyświetleniu wartości po kliknięciu poza polem tekstowym. Czy muszę używać dodatkowego kodu jQuery w połączeniu z tym, co napisałeś? Czy twoja metoda jest w jakikolwiek sposób lepsza od tego, co zasugerował mihmud? –

+0

@Shusl - Aktualizacja odnotowana, dzięki. –