2012-10-11 10 views
5

quello che ho

Ho un campo di testo, il mark-up di cui non riesco a modificare direttamente:Non è possibile disabilitare onclick/onblur valori per campo di testo tramite 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'; }"> 

Che cosa ho bisogno

Ho bisogno che il valore del campo di testo sia vuoto indipendentemente dal fatto che il campo di testo sia cliccato, non cliccato o escluso.

Quello che ho provato

posso disattivare il valore:

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

Ho provato a disattivare l'onclick e onblur valori:

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

... tuttavia, il valore riappare non appena clicco fuori dal campo di testo.

La mia domanda

Come faccio a rimuovere il valore onblur da quanto sopra mark-up?

+4

+ 1 per la domanda disposti in modo ordinato. – Nick

+0

@OptimusPrime - Riconoscimento apprezzato, grazie. –

risposta

6

provare in questo modo:

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

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

+0

Questo metodo funziona. Grazie. –

+2

Un jsfiddle per dimostrarlo anche: http://jsfiddle.net/8pAre/ (volevo verificarlo prima di upvoting) – Chris

+0

@DominorNovus felice di aiutare :) –

1

È necessario rimuovere JavaScript in linea. jsfiddle. L'utilizzo di jQuery.one assicurerà che l'evento di attivazione venga richiamato una sola volta.

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



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

UPDATE: Come suggerito da mahmoud, è necessario rimuovere onClick e onBlur attributo se non è possibile modificare il codice HTML.

off e unbind verranno scollegate jQuery click evento non inline onclick e restituire false anche non risolverebbe il problema il più in linea onClick verrà chiamato prima.

+1

"Ho un campo di testo, di cui non posso modificare direttamente il markup" quindi non può rimuovere il javascript inline. – Chris

+0

@ Slhus - Grazie, ma per qualche motivo, il codice non ha impedito la ricomparsa del valore quando si fa clic all'esterno del campo di testo. Devo utilizzare un ulteriore codice jQuery insieme a quello che hai pubblicato? Inoltre, il tuo metodo è superiore in qualsiasi modo a ciò che ha suggerito Mahmoud? –

+0

@ Slhus - Aggiornamento notato, grazie. –