2013-06-12 15 views
0

我会试着尽我所能解释这一点。好了,这里是我的代码:当字段值为空时,表示它太短! (Javascript)

function validation() { 

    var name = document.getElementById("name").value; 
    var email = document.getElementById("email").value; 
    var subject = document.getElementById("subject").value; 
    var message = document.getElementById("message").value; 
    var at = "@"; 
    var dot = "."; 
    var lat = email.indexOf(at); 
    var lstr = email.length; 
    var ldot = email.indexOf(dot); 

    var success = true; 

    if (name == null || name == "") { 
     success = false; 
     document.getElementById("name-error").innerHTML = "I want to know who you are!"; 
    } 

    if (document.contact.name.value.length <= 5) { 
     success = false; 
     document.getElementById("name-error").innerHTML = "Full name, please!"; 
    } 

    if (email.indexOf(at) == -1 || email.indexOf(at) == 0 || email.indexOf(at) == lstr) { 
     success = false; 
     document.getElementById("email-error").innerHTML = "That's not an email!"; 
    } 

    if (email == null || email == "") { 
     success = false; 
     document.getElementById("email-error").innerHTML = "Give me your email!"; 
    } 

    if (document.contact.email.value.length <= 8) { 
     success = false; 
     document.getElementById("email-error").innerHTML = "Email is too short!"; 
    } 

    if (subject == null || subject == "") { 
     success = false; 
     document.getElementById("subject-error").innerHTML = "I need a subject!"; 
    } 

    if (document.contact.subject.value.length <= 5) { 
     success = false; 
     document.getElementById("subject-error").innerHTML = "A longer subject would be nice."; 
    } 

    if (message == null || message == "") { 
     success = false; 
     document.getElementById("message-error").innerHTML = "Don't forget your message!"; 
    } 

    if (document.contact.message.value.length <= 30) { 
     success = false; 
     document.getElementById("message-error").innerHTML = "Your message is too concise!"; 
    } 

    return success; 

} 

我的问题是,即使在id的值是空的,它仍然说,这是太短了。例如,当我点击发送按钮时,它说域名太短,即使它是空的。我以为我说过,如果name ==“”(它是空的),请说“我想知道你是谁!”。但是现在,它只是说,如果名称的值是< = 5 ...,当它是空的时,应该显示suppost以显示“请填写全名”。知道我在说什么?

+0

使用'其他if's。这样,只有一个错误将会是'innerHTML'。而不是在每个块中设置成功false,最初保持为false。 –

回答

1

您提到与字段相关的所有条件仅为if,但实际上您需要将它们提及为if.. elseif... else if.. else语句。

如果你只提if语句,然后它会执行所有相关的代码字段和atlast它会显示你指定给innerHTML这始终是后者的值“电子邮件是太短了!”在你的“电子邮件字段”状态。

+0

啊,我明白了。所以我应该说,如果name ==“”这样做,否则如果name <= 5那么做? – Matthew

+0

@MattKnowsTech是 –

2

使之成为一个elseif而不是有两个分开独立的条件:

if(name == null || name == "") { 
success = false; 
    document.getElementById("name-error").innerHTML = "I want to know who you are!"; 
} 
else if(document.contact.name.value.length <= 5) { 
success = false; 
document.getElementById("name-error").innerHTML = "Full name, please!"; 
} 
+0

'别的if',不'elseif' –

+0

临屋的标签上写着'的JavaScript!= php' – stUrb

+0

你引用的PHP文档,而我们正在谈论的JavaScript? – g00glen00b

0

这是您的修复代码:

<!doctype html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8"> 
<title>Form validation</title> 
<script> 
function validation() { 

    var name = document.getElementById("name").value.trim(); 
    var email = document.getElementById("email").value.trim(); 
    var subject = document.getElementById("subject").value.trim(); 
    var message = document.getElementById("message").value.trim(); 
    var at = "@"; 
    var dot = "."; 
    var lat = email.indexOf(at); 
    var lstr = email.length; 
    var ldot = email.indexOf(dot); 

    var success = true; 

    if(name == null || (name.length)==0) { 
     success = false; 
     document.getElementById("name-error").innerHTML = "I want to know who you are!"; 
    }else{   
     document.getElementById("name-error").innerHTML = ""; 
    } 

    if(name.length > 1 && document.contact.name.value.length < 5) { 
     success = false; 
     document.getElementById("name-error").innerHTML = "Full name, please!"; 
    } 

    if(email == null || email.length==0) { 
     success = false; 
     document.getElementById("email-error").innerHTML = "Give me your email!"; 
    }else{ 
     document.getElementById("email-error").innerHTML = ""; 
    }  

    if(email.length > 1 && document.contact.email.value.length <= 8){ 
     success = false; 
     document.getElementById("email-error").innerHTML = "Email is too short!";  
    } 

    if(email.length > 8 && email.indexOf(at) == -1 || email.indexOf(at) == 0 || email.indexOf(at) == lstr){ 
     success = false; 
     document.getElementById("email-error").innerHTML = "That's not an email!"; 
    } 

    if(subject == null || subject.length==0) { 
     success = false; 
     document.getElementById("subject-error").innerHTML = "I need a subject!"; 
    }else{ 
     document.getElementById("subject-error").innerHTML = ""; 
    } 

    if(subject.length > 0 && document.contact.subject.value.length <= 5){ 
     success = false; 
     document.getElementById("subject-error").innerHTML = "A longer subject would be nice."; 
    } 

    if(message == null || message.length==0) { 
     success = false; 
     document.getElementById("message-error").innerHTML = "Don't forget your message!"; 
    }else{ 
     document.getElementById("message-error").innerHTML = ""; 
    } 

    if(message.length > 0 && document.contact.message.value.length <= 30){ 
     success = false; 
     document.getElementById("message-error").innerHTML = "Your message is too concise!"; 
    } 

    return success; 

} 
</script> 
</head> 
<body> 
<form action="" method="post" name='contact'> 
    <input type="text" name="name" id="name" value=''/> 
    <span id="name-error"></span> 
    <br /> 
    <input type="text" name="email" id="email" value=''/> 
    <span id="email-error"></span> 
    <br /> 
    <input type="text" name="subject" id="subject" value=''/> 
    <span id="subject-error"></span> 
    <br /> 
    <input type="text" name="message" id="message" value=''/> 
    <span id="message-error"></span> 
    <br /> 
    <input type="button" value="Send" onclick='return validation();'> 
</form> 

</body> 
</html> 

Fiddle DEMO

相关问题