2010-12-16 10 views
2

Wenn Sie im Stackoverflow das Formular "Frage stellen" auswählen, wird automatisch das Eingabefeld für Fragen ausgewählt. Wenn Sie darauf klicken, verschwindet das Ganze, auch bekannt als ToggleValErneutes Erstellen des Fragetextfeldverhaltens von Stackoverflow mit jQuery

Wenn Sie jedoch das toggleVal Plugin verwenden, es löscht automatisch den Standardwert auf .select(), auch wenn die select()

programatically getan wurde

Wie verhindert Stackoverflow das automatische Löschen?

+0

auf Firefox 3.6 der Aufforderungstext verschwindet nicht, bis ich etwas eingeben. – BoltClock

+0

Gleiches gilt für Chrome 8.0.5 auf dem Mac – jyoseph

Antwort

3

ich an der Quelle gesucht und fanden diese:

<input id="title" name="title" type="text" maxlength="300" tabindex="100" class="ask-title-field edit-field-overlayed" value="">       
<span class="edit-field-overlay">what's your programming question? be specific.</span> 

auf dieser Grundlage hier ist meine Annahme (ohne Blick auf den Code). Ich denke, sie verwenden den Text im span-Tag als Standardwert für die Texteingabe. Ich weiß das, weil ich den Text in der Spanne geändert habe (mit Firebug) und dann in das Feld neu fokussiert habe, es zeigte meinen bearbeiteten Text an. Wie auch immer, hier ist etwas, was ich schnell geschrieben habe.

// set the default value based on the span text 
$('input[name=foo]').val($('.foo-overlay').text()); 

// whenever there is focus or blur 
$('input[name=foo]').bind('focus blur',function(){ 

    // get the default text from the span 
    var defaultText = $('.foo-overlay').text(); 

    // if the input field has default text 
    if(this.value == defaultText){ 
    this.value = ''; 
    } 
    // if the input is blank, set it to the default text 
    else if (!this.value.length){ 
    this.value = defaultText; 
    }; 

});​ 

Here's a demo. Ich sage nicht, dass sie genau das tun. Es ist Spekulation basierend auf einem kurzen Blick.


bearbeiten

nachzulesen einfach Ihre Frage und erkannte man nach sein könnte, wie der Standardwert zunächst nicht löschen? Sehen Sie sich diese ähnliche Demo aus: http://jsbin.com/oyani4/2/

Und hier ist der aktualisierte Code:

// set the default value based on the span text 
$('input[name=foo]').val($('.foo-overlay').text()); 

// whenever there is focus or blur 
$('input[name=foo]').bind('focus blur',function(){ 

    // if there is no length, reset to default text 
    if (!this.value.length){ 
    this.value = $('.foo-overlay').text(); 
    }; 

}); 

$('input[name=foo]').keydown(function(){ 

    // if there is length and it's not our default text 
    if (this.value.length && this.value == $('.foo-overlay').text()){ 
    this.value = ''; 
    }; 

}); 
Verwandte Themen