2014-10-30 6 views
9

Ich versuche, den Cursor auf die Position des Anfangs zu setzen, wenn ich im Fokus eines Textfelds bin. Das ist, was ich habe:Typ E-Mail unterstützt keine Auswahlbereich

$("ID").focus(function() { 
    var input = this; 
    setTimeout(function() { 
     input.setSelectionRange(0, 0); 
    }, 0); 
}); 

Aber ich bekomme diese Fehlermeldung jedes Mal, wenn ich versuche, das Skript zu laden:

Uncaught InvalidStateError: Failed to execute 'setSelectionRange' on 'HTMLInputElement': The input element's type ('email') does not support selection.

Ich glaube, ich nicht setSelectionRange auf E-Mails verwenden kann. Also, irgendwelche anderen Lösungen, wie ich meine Cursorposition im Eingabetextfeld einstellen kann (ohne den Typ E-Mail zu ändern)?

+0

Es gibt keinen Weg darum herum, wenn Sie den 'type =" email "' behalten möchten. Das "type =" number "" hat das gleiche Problem ... Sie können Ihre Meinung in der [Diskussion auf w3.org] (https://www.w3.org/Bugs/Public/show_bug.cgi?id=) äußern 24796) (es ist speziell für Zahleneingaben; ich habe nicht nach einer E-Mail-Eingabe Diskussion gesucht). Ähnlich wie http://stackoverflow.com/questions/21177489/selectionstart-selectionend-on-input-type-number-no-loner-allowed-in-chrome – Mottie

Antwort

0

Ich weiß, es ist eine alte Frage, aber ich werde es für zukünftige Referenzen beantworten.

Die E-Mail-Eingabe mit setSelectionRange funktioniert derzeit mit allen gängigen Browsern. Hier

ein Beispiel:

jQuery('.email').focus(function() { 
 
    jQuery(this)[0].setSelectionRange(2, 5); 
 
})
.email 
 
{ 
 
padding: 15px; 
 
    width: 350px 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="email" name="email" class='email' value='testin_email_selection'>

jsFiddle: https://jsfiddle.net/eLz6ukmm/

Getestet in FF33 und Kanten.

+6

Es funktioniert nicht in Chrome, die ich würde ein ' Hauptbrowser ':( –

+0

Erzeugt einen InvalidStateError in Firefox 53 –