【发布时间】:2014-04-08 00:39:52
【问题描述】:
我正在尝试通过检查是否在文本框中输入了某些内容来验证用户输入。我尝试使用 javascript 来做到这一点。我想要实现的是,用户会收到一个特定字段为空的警报框。跨度也将用于在所需字段上显示错误消息。一旦用户开始输入,错误消息应该会清除。请问我该怎么做?这是我到目前为止所做的,但它没有按预期工作,我觉得我在重复代码。 Fiddle
<form>
<div id="Login">
<div>
<label for="signin_email">Email Address*: </label><input id="signin_email" name="signin_email" type="email" autofocus maxlength="50" /><span style="display:none;" id="signin_emailerror" name="signin_emailerror">*Please enter your Email address</span>
</div>
<div>
<label for="signin_pword">Password*: </label><input id="signin_pword" name="signin_pword" type="password" maxlength="24" /><span style="display:none;" id="signin_pworderror" name="signin_pworderror">*Please enter your Password</span>
</div>
<div>
<button type="submit" id="signin" name="signin" value="Sign In" onclick="return signin_validate()">Sign in</button>
</div>
</div>
<div id="register">
<h2>Register here</h2>
<div>
<label for="fname">First Name*: </label>
<input id="fname" name="fname" maxlength="30" type="text" /><span style="display:none;" id="fnameerror" name="fnameerror">*Please enter your First Name</span>
</div>
<div>
<label for="lname">Last Name*: </label><input id="lname" name="lname" maxlength="30" type="text" /><span style="display:none;" id="lnameerror" name="lnameerror">*Please enter your Last Name</span>
</div>
<div>
<button type="submit" id="register" name="register" value="Register" onclick="return validateForm()">Register</button>
</div>
</div>
</form>
Javascript:
function validateForm(){
var valid=true;
var msg;
document.getElementById('fname').onkeyup=function(){
if(document.getElementById('fname').value.length==0){
valid=false;
msg='Please enter your first name';
document.getElementById('fnameerror').style.display='inline';
document.getElementById('fnameerror').style.color='red';
document.getElementById('fname').focus();
}
else{
document.getElementById('fnameerror').style.display='none';
}
if(document.getElementById('fname').value.length==0){
document.getElementById('fnameerror').style.display='inline';
document.getElementById('fnameerror').style.color='red';
valid=false;
document.getElementById('fname').focus();
msg='Please enter your first name';
}
else{
document.getElementById('fnameerror').style.display='none';
}
}
if(valid==false){
alert(msg);
}
return valid;
}
function signin_validate(){
//VALIDATION FOR SIGN IN FORM
//validating the password field
//alert("You are here");
var valid=true;
var msg;
if(document.getElementById('signin_email').value.length==0){
valid=false;
msg='Please enter your email';
document.getElementById('signin_emailerror').style.display='inline';
document.getElementById('signin_emailerror').style.color='red';
document.getElementById('signin_email').focus();
}
else{
document.getElementById('signin_emailerror').style.display='none';
}
document.getElementById('signin_email').onkeyup=function(){
if(document.getElementById('signin_email').value.length==0){
valid=false;
msg='Please enter your email';
document.getElementById('signin_emailerror').style.display='inline';
document.getElementById('signin_emailerror').style.color='red';
document.getElementById('signin_email').focus();
}
else{
document.getElementById('signin_emailerror').style.display='none';
}
}
if(valid==false){
alert(msg);
}
return valid;
}
此外,正如小提琴中所见,我必须“表单”、登录和注册。当我在注册的字段中输入内容并单击登录按钮时,我输入的任何内容都会消失。这发生在firefox上但不是在chrome上,请问如何解决这个问题?我需要创建两个单独的表格吗?这样做是否理想?
【问题讨论】:
标签: javascript html forms validation