Regelmäßige Textfeld, Benutzer gibt eine Zeichenfolge ein. Testen Sie, ob a) etwas in der Eingabe vorhanden ist, b) dass in der Eingabe kein Leerzeichen enthalten ist, und c) nur ganze Zahlen sind, keine anderen Zeichen. Dann die Schaltfläche senden. Sie werden feststellen, dass ich nicht HTML-Verhalten verwende, gibt es keinen onclick in der Eingabe, strenge Trennung von Inhalt/Präsentation/Verhalten.Javascript Fokus() ist nicht fokussiert
Mein HTML:
<form name="basicText" id="basicText" action="">
<p>Enter any ol' integer:
<input type="text" id="inputBox" name="inputBox" size="14"/>
<input value = "Next...?" type="submit" id="mySubmitBtn" name="mySubmitBtn"/>
</p>
</form>
<script src="js/w1bscript.js" type="text/javascript"></script>
Beachten Sie auch, dass die externe JavaScript-Datei am Ende der so alle Elemente hinzugefügt wird, laden können (nicht über onload jetzt besorgniserregend).
Das JavaScript:
var myButton1 = document.getElementById("mySubmitBtn");
var myForm1 = document.getElementById("basicText");
var myTextBox = myForm1.inputBox;
function submitPress() {
if(myTextBox.value.length == 0) {
alert("You didn't enter anything! Once more time, with feeling...")
basicText.focus();
basicText.select();
} else if(/\s/.test(myTextBox.value)) {
alert("Eh... No spaces. Just integers. Try again...");
basicText.focus();
basicText.select();
} else if (isNaN(myTextBox.value)==true) {
alert("Eh... Gonna need you to enter ONLY digits this time. kthnx.");
basicText.focus();
basicText.select();
} else {
// The textbox isn't empty, and there's no spaces. Good.
alert("you've passed the test!")
}
}
myButton1.addEventListener('click', submitPress, false);
Wenn ich eine falsche Eingabe ein, die Logik arbeitet, aber der Cursor nicht zurück in das Textfeld konzentrieren, egal welchen Browser ich verwende.
Fiddle: http://jsfiddle.net/2CNeG/
Danke, Don
@DonG Sie scheinen auch das Formular einzureichen, unabhängig davon, ob die Validierung bestanden wurde oder nicht. – bfavaretto
Yup; es wäre besser für ihn, type = 'button' --OR-- zu verwenden, um false in der Validierungsfunktion für jene Pfade zurückzugeben, bei denen die Validierung fehlschlägt. –
Okay, ich sehe Ihren Punkt, ich habe es in myTextBox.focus() geändert; und immer noch keinen Fokus auf die Eingabe/Textfeld. – DonG