document.getElementById(frmObj.id).value="";
document.getElementById(frmObj.id).autofocus;
document.getElementById("errorMsg").innerHTML = "Only numeric value is allowed";
Im obigen Code ist der Wert des Formularobjekts perfekt eingestellt, ""
aber das Textfeld enthält keinen Cursor. Ich möchte, dass ein Cursor da ist. focus()
fokussiert nur dieses Eingabefeld, setzt den Cursor jedoch nicht.
javascript
dom-events
Yukti Kamra
quelle
quelle
document.getElementById(fieldID).focus();
sollte den blinkenden Cursor in das Formularfeld setzen, es sei denn, Sie haben etwas anderes, das den Fokus auf der Seite erfasst. Die Aussage mit .autofocus, die Sie jetzt haben, macht nichts.focus()
setzt den Cursor. Dies ist die ganze Bedeutung der Fokusaktion.Antworten:
Konzentrieren Sie sich in JavaScript zuerst auf das Steuerelement und wählen Sie dann das Steuerelement aus, um den Cursor auf texbox anzuzeigen ...
document.getElementById(frmObj.id).focus(); document.getElementById(frmObj.id).select();
oder mit jQuery
$("#textboxID").focus();
quelle
Mir ist klar, dass dies eine ziemlich alte Frage ist, aber ich habe eine "dumme" Lösung für ein ähnliches Problem, die vielleicht jemandem helfen könnte.
Ich hatte das gleiche Problem mit einem Textfeld, das als ausgewählt angezeigt wurde (mit der Focus-Methode in JQuery), aber den Cursor nicht aufgenommen hat.
Tatsache ist, dass ich das Debugger-Fenster geöffnet hatte, um zu sehen, was passiert, und DIESES Fenster den Fokus stahl. Die Lösung ist banal einfach: Schließen Sie einfach den Debugger und alles ist in Ordnung ... 1 Stunde Testzeit!
quelle
<span>
Element fokussierbar zu machen, und dies war schließlich das Problem (ich bin froh, dass ich die erste akzeptierte Antwort bestanden habe). Ich habe auch festgestellt, dass es HTML-Elemente gibt, die standardmäßig nicht fokussierbar sind (scheint browserspezifisch zu sein). Das<span>
Element ist eines dieser Elemente, weshalb Chrome (Version 57) das Fenster der Entwicklertools in den Mittelpunkt stellte.Manchmal erhalten Sie Fokus, aber keinen Cursor in einem Textfeld. In diesem Fall würden Sie Folgendes tun:
document.getElementById(frmObj.id).select();
quelle
setSelectionRange
würde NICHT funktionieren<input type="number"/>
Eines der Dinge, die Sie beißen können, ist, wenn Sie es
.onmousedown
als Benutzerinteraktion verwenden. Wenn Sie dies tun und dann sofort versucht wird, ein Feld auszuwählen, geschieht dies nicht, da die Maus auf etwas anderes gedrückt wird . Wechseln Sie also zu.onmouseup
und Viola,focus()
funktioniert jetzt , da sich die Maus in einem nicht angeklickten Zustand befindet, wenn versucht wird, den Fokus zu ändern.quelle
Sie haben nicht genügend Code bereitgestellt, um Ihnen zu helfen. Sie senden wahrscheinlich das Formular und laden die Seite neu. ODER Sie haben ein Objekt auf der Seite wie eine eingebettete PDF-Datei, die den Fokus stiehlt.
Hier ist die kanonische einfache Javascript-Methode zum Validieren eines Formulars. Sie kann mit onubtrusivem JS verbessert werden, wodurch das Inline-Skript entfernt wird. Dies ist jedoch der Ausgangspunkt für DEMO
function validate(formObj) { document.getElementById("errorMsg").innerHTML = ""; var quantity = formObj.quantity; if (isNaN(quantity)) { quantity.value=""; quantity.focus(); document.getElementById("errorMsg").innerHTML = "Only numeric value is allowed"; return false; } return true; // allow submit }
Hier ist der HTML
<form onsubmit="return validate(this)"> <input type="text" name="quantity" value="" /> <input type="submit" /> </form> <span id="errorMsg"></span>
quelle
Auf diese Weise setzen Sie den Fokus und den Cursor auf das Ende Ihrer Eingabe:
div.getElementsByTagName("input")[0].focus(); div.getElementsByTagName("input")[0].setSelectionRange(div.getElementsByTagName("input")[0].value.length,div.getElementsByTagName("input")[0].value.length,"forward");
quelle
Durch meine Erfahrung
ist gut in einem Browser, der auf einem PC läuft. Wenn Sie jedoch auf dem Handy möchten, dass die Tastatur angezeigt wird, damit der Benutzer sie direkt eingeben kann, benötigen Sie außerdem:
quelle