2009-06-27 2 views
1

(ich hoffe, meinen Titel verständlich ist, war es schwer zusammenzufassen.)Wie ändere ich den Formulartext mit Jquery, aber behalte es, wenn es vom Benutzer gefüllt wird?

Ich habe ein Skript, das einen Text in einem Formular auf dem ausgewählten Optionsfeld je ändern, wie Sie hier sehen können: http://jsbin.com/onowu/

Das Problem ist, dass wenn ein Benutzer einen Text eingibt und dann auf einen anderen Radioknopf klickt, wird er seinen Text entfernen.

Was ich suche ist eine Möglichkeit, den grauen Text NUR zu ändern, wenn kein Text vom Benutzer ausgefüllt wird. Und wenn der Benutzer seinen Text entfernt, wird er mit dem Text ausgefüllt, abhängig von der ausgewählten Optionsschaltfläche.

Sie meinen Code sehen hier: http://jsbin.com/onowu/edit

Antwort

5

Überprüfen Sie, ob die Eingabe der Klasse „Hinweis“ hat. Ändern Sie den Text nur, wenn es funktioniert.

Voll Beispiel:

$(document).ready(function() { 
    function setText(){ 
     var kf = this.title.split('|'); 
     if (kf.length < 0) return; 
     if($('#' + this.name + '_text').hasClass('hint')){ 
      $('#' + this.name + '_text').val(kf[0]).addClass('hint'); 
     } 
     $('#' + this.name + '_text').attr('title', kf[0]); 
    } 

    $("input[type='text']").inputdynvalue(); 
    $("input[type='radio']").click(setText); 
}); 

Dies funktioniert durch die Eingabe Textbox für die Klasse „Hinweis“ Überprüfung und Änderung des Wertes nur dann, wenn es gefunden wird. Wie in den Kommentaren von Jonathan Sampson erwähnt, "entfernt das Ereignis .focus() den Hinweis der Klasse" und das Ereignis .blur() fügt es erneut hinzu, wenn kein Text angegeben wurde ".

Ich würde auch Ihren Code über die html validation service von W3C zur Verfügung gestellt. JavaScript kann lustig sein, wenn Sie keinen gültigen Code haben. (Plus jeder sollte gültige html schreiben)

A auch bemerkt, dass Sie jQuery zweimal in Ihrem Code eingeschlossen waren, würde ich vorschlagen, dass Sie eins der einen von ihnen entfernen.


Aktualisiert (10. Juli 2009): Es wurde ein Fehler behoben, der in den Kommentaren unten erwähnt wurde.

+1

++ | Darüber hinaus entfernt das Ereignis .focus() den Klassenhinweis und das Ereignis .blur() fügt es erneut hinzu, wenn kein Text bereitgestellt wurde. Nur die Antwort von MitMaro war nicht ganz klar. – Sampson

+0

Gute Punkte Jonathan, ich hätte das erwähnen sollen. Danke – MitMaro

+0

lr_text funktioniert nur mit dem ersten Formular, aber ich habe mehrere auf meinen Seiten (nur 2 im angegebenen Beispiel, aber ich habe mehr), also habe ich etwas mit $ ('#' + this.name + '_text') versucht Aber es hat nicht funktioniert. – Mark

Verwandte Themen