2009-04-27 15 views
11

Ich verstehe, dass mit Javascript Sie den Inhalt einer Textbox mit dem folgenden Code auswählen können (in jQuery):Abwahl Inhalt einer Textbox mit Javascript

$("#txt1").select(); 

Gibt es eine Möglichkeit, das Gegenteil zu tun? Um den Inhalt einer Textbox abzuwählen? Ich habe das Fokusereignis einer Reihe von Textfeldern, um den Inhalt in ihnen auszuwählen. Es gibt Zeiten, in denen ich ein bestimmtes Textfeld fokussieren möchte, OHNE es auszuwählen. Was ich vorhabe, ist, das Fokus-Ereignis für dieses spezielle Textfeld aufzurufen, aber dann mit einem Aufruf zu folgen, um es abzuwählen.

$("input[type=text]").focus(function() { 
    $(this).select(); 
}); 

//code.... 

$("#txt1").focus(); 

//some code here to deselect the contents of this textbox 

Irgendwelche Ideen?

Danke!

Antwort

17

was dazu:

$("input").focus(function(){ 
    this.selectionStart = this.selectionEnd = -1; 
}); 
+0

groß in IE9 funktioniert. FF scheint ein wenig langsam zu sein. – Maxx

+0

könnte es sein, dass Firefox zur Zeit dieser Langsamkeit 1,5 GB RAM nahm? meins macht das gerne, bevor ich es töte – mkoryak

8

Wenn Sie den Wert des Textfelds nur sich selbst zuweisen, sollte der Text deaktiviert werden.

0

Anstatt zu wählen und dann abzuwählen, warum nicht einfach einen boolean auf dem dom-Element vorübergehend speichern?

$("input[type=text]").focus(function() { 
    if($(this).skipFocus) return; 
    $(this).select(); 
}); 

//code.... 

$("#txt1").skipFocus = true; 
$("#txt1").focus(); 
-1

Wenn Sie ein Textfeld mit jQuery gehen Sie wie folgt deaktivieren wollen:

$(your_input_selector).attr('disabled', 'disabled'); 
    $(your_input_selector).removeAttr('disabled'); 
3

Sie benötigen die selectionStart und selectionEnd Attribut zu setzen. Aber aus irgendeinem Grund funktioniert die Einstellung auf Fokus-Ereignis nicht (ich habe keine Ahnung warum). Um dies zu ermöglichen, legen Sie die Attribute nach einem kurzen Intervall fest.

$(document).ready(function(){ 
    $('#txt1').focus(function(){ 
     setTimeout(function(){ 
     // set selection start, end to 0 
     $('#txt1').attr('selectionStart',0); 
     $('#txt1').attr('selectionEnd',0); 
     },50); // call the function after 50ms 
    }); 
    }); 
1

Um „eine bestimmte Textbox zu konzentrieren, ohne es zu der Auswahl“: ich den Teil des patched jquery plugin jquery-fieldselection

verwenden würde, die Sie

$('#my_text_input').setSelection({"start":0, "end":0}); // leaves the cursor at the left 

oder benutzen Sie diese reduzierte Version, die Orte nennen der Cursor am Ende des Textes (standardmäßig)

(function() { 
var fieldSelection = { 
    setSelection: function() { 
     var e = (this.jquery) ? this[0] : this, len = this.val().length || ; 
     var args = arguments[0] || {"start":len, "end":len}; 
     /* mozilla/dom 3.0 */ 
     if ('selectionStart' in e) { 
      if (args.start != undefined) { 
       e.selectionStart = args.start; 
      } 
      if (args.end != undefined) { 
       e.selectionEnd = args.end; 
      } 
      e.focus(); 
     } 
     /* exploder */ 
     else if (document.selection) { 
      e.focus(); 
      var range = document.selection.createRange(); 
      if (args.start != undefined) { 
       range.moveStart('character', args.start); 
       range.collapse(); 
      } 
      if (args.end != undefined) { 
       range.moveEnd('character', args.end); 
      } 
      range.select(); 
     } 
     return this; 
    } 
}; 
jQuery.each(fieldSelection, function(i) { jQuery.fn[i] = this; }); 
})(); 

diese Weise verwendet:

$('#my_text_input').setSelection(); // leaves the cursor at the right 
0

I ist eine einfache Lösung vorschlagen möchten

$("input[type=text]").focus(function() { 
    $(this).select(); 
}); 

$("input[type=text]").blur(function() { 
    $('input[type="hidden"][value=""]').select(); 
}); 

//code.... 

$("#txt1").focus(); 
0

Hier ist eine einfache Lösung ohne jquery

<input type="text" onblur="this.selectionStart = this.selectionEnd = -1;"> 
Verwandte Themen