2012-10-11 8 views
5

deaktivieren Was ich habe

ich ein Textfeld haben, kann die Mark-up, von denen ich nicht direkt bearbeiten:Kann nicht Onclick/onblur Werte für Textfeld über 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'; }"> 

Was ich brauche

Ich brauche den Textfeldwert leer, unabhängig davon, ob auf das Textfeld geklickt, nicht angeklickt oder geklickt wurde.

Was ich versucht habe

ich den Wert deaktivieren:

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

Ich habe versucht, die Onclick und onblur Werte zu deaktivieren:

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

... aber Der Wert wird wieder angezeigt, sobald ich außerhalb des Textfelds klicke.

Meine Frage

Wie kann ich den onblur Wert aus dem obigen Mark-up entfernen?

+4

+ 1 für überschaubare Frage. – Nick

+0

@OptimusPrime - Anerkennung geschätzt, danke. –

Antwort

6

versuchen auf diese Weise:

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

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

+0

Diese Methode funktioniert. Vielen Dank. –

+2

Ein Jfiddle, um es auch zu beweisen: http://jsfiddle.net/8pAre/ (Ich wollte es vor dem Upvoting überprüfen) – Chris

+0

@DominorNovus froh, um zu helfen :) –

1

Sie sollten Inline-JavaScript entfernen. jsfiddle. Mit jQuery.one wird sichergestellt, dass das Fokusereignis nur einmal aufgerufen wird.

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



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

UPDATE: Wie mahmoud vorgeschlagen, sollten Sie onClick und onBlur Attribut entfernen, wenn Sie Ihre HTML nicht bearbeiten können.

off und unbind wird jQuery click Ereignis entbinden nicht onclick Inline- und falsch zurück würde auch nicht Ihr Problem lösen, wie Inline-onClick wird zuerst aufgerufen.

+1

"Ich habe ein Textfeld, dessen Markup ich nicht direkt bearbeiten kann", so dass er das Inline-Javascript nicht entfernen kann. – Chris

+0

@Shusl - Danke, aber aus irgendeinem Grund verhinderte der Code nicht, dass der Wert wieder angezeigt wurde, wenn außerhalb des Textfelds geklickt wurde. Muss ich zusätzlichen jQuery-Code in Verbindung mit dem, was Sie gepostet haben, verwenden? Auch, ist Ihre Methode in irgendeiner Weise überlegen, was Mahmoud vorgeschlagen hat? –

+0

@Shusl - Update notiert, danke. –