如果javascript验证失败,则关注文本字段
我有以下代码:如果javascript验证失败,则关注文本字段,javascript,focus,Javascript,Focus,我有以下代码: <html> <head> <script type="text/javascript"> function validate(){ var name=document.frm.name.value; if(name.indexOf("A")==0){ alert(name);
<html>
<head>
<script type="text/javascript">
function validate(){
var name=document.frm.name.value;
if(name.indexOf("A")==0){
alert(name);
}
}
</script>
</head>
<body>
<form name="frm" action="test.php">
Enter name:<input type="text" name="name" onblur="validate()"/>
Enter e-Mail:<input type="text" name="email" onblur=""/>
<input type="submit"/>
</form>
</body>
</html>
那就不行了
任何人都可以帮忙,我应该怎么做才能请求文本字段的焦点name
?我对
javascript
只有一点了解,可以这样修改您的脚本
<html>
<head>
<script type="text/javascript">
function validate(){
var name=document.frm.name.value;
if(name.indexOf("A")==0){
alert(name);
}
}
</script>
</head>
<body >
<form id="frm" action="test.php">
Enter name:<input type="text" name="username" onblur="validate()"/>
Enter e-Mail:<input type="text" name="email" onblur=""/>
<input type="submit" onclick="check()"/>
</form>
<SCRIPT LANGUAGE="JavaScript">
<!--
function validate()
{
var name = document.getElementById('frm').username.value;
if(name.indexOf("A") == 0){
alert(name);
document.getElementById('frm').email.focus();
}else{
document.getElementById('frm').username.focus();
}
}
function check()
{
var name = document.getElementById('frm').username.value;
if(name.indexOf("A") == 0){
}else{
alert("Please enter a name starting with 'A'");
document.getElementById('frm').username.focus();
}
}
//-->
</SCRIPT>
</body>
</html>
函数验证(){
var name=document.frm.name.value;
if(name.indexOf(“A”)==0){
警报(名称);
}
}
输入名称:
输入电子邮件:
您想在事件
onblur
上执行函数validate()。在脚本中,您编写了聚焦代码,但没有将其添加到函数中。只需为表单提供一个id
,并使用document.getElementById('form\u id')
引用即可。十多年前,在这种上下文中使用name
属性已被弃用。另外,名称
对于输入
应该是非“名称”
,而不是使用用户名
或某物
HTML:
<form id="frm" action="test.php">
Enter name:<input type="text" name="username" id="username" onblur="validate()"/>
Enter e-Mail:<input type="text" name="email" id="email" onblur=""/>
</form>
function validate(){
var form = document.getElementById('frm');
if (form.username.value.indexOf("A") === 0) {
alert(name);
} else {
form.username.focus();
}
}
您也可以将表单
作为参数传递给validate()
,而不是检索表单的id
,:onblur=“validate(this);”
。然后在eventhandler中将该参数用作表单
:
function validate(form){
if (form.username.value.indexOf("A") === 0) {
alert(name);
} else {
form.username.focus();
}
}
编辑
Focus似乎无法立即工作,您可以尝试此操作(输入的具有id=“username”
):
试试这个document.frm.username.focus()代码>。我希望它能起作用。不起作用吗?如果不添加以“a”开头的单词,则焦点位于名称文本字段上。你能解释一下不起作用吗?如果用户没有输入以a开头的名称,请尝试而不是怎么做?如何聚焦该文本字段?我是否可以像这样传递文本字段的引用:onBlur=“validate(this.username)”
?@MohammadFaisal是的,这也是有效的。为什么您使用====
而不是=
?@MohammadFaisal我刚才在比较时使用过。实际上,这并不重要,因为indexOf()
将始终返回一个数字。
function validate(form){
if (form.username.value.indexOf("A") === 0) {
alert(name);
} else {
form.username.focus();
}
}
function focusTo (elm) {
elm.focus();
return;
}
function validate(){
var form = document.getElementById('frm');
if (form.username.value.indexOf("A") === 0) {
alert(name);
} else {
alert('error');
setTimeout(function () {focusTo(form.username);}, 10);
}
}