[英]How to make input required
我想要的是,當兩個字段即fname
和lname
保持為空時,彈出窗口應顯示兩個消息,即“必須填寫名字”,“必須填寫姓氏”。
我需要做哪些修改?
<!DOCTYPE html>
<html>
<head>
<script>
function validateForm() {
var x = document.forms["myForm"]["fname"].value;
if (x == null || x == "") {
alert("First name must be filled out");
document.myForm.fname.focus();
return false;
}
var y = document.forms["myForm"]["lname"].value;
if (y == null || y == "") {
alert("Last name must be filled out");
document.myForm.lname.focus();
return false;
}
}
</script>
</head>
<body>
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post">First name:
<input type="text" name="fname">Last name:
<input type="text" name="lname">
<input type="submit" value="Submit">
</form>
</body>
也許這會給你一些關於如何進行的想法:
function validateForm() {
var errors = [],
fname = document.forms["myForm"]["fname"],
lname = document.forms["myForm"]["lname"];
if (lname.value == "") {
errors.unshift("Last name must be filled out");
lname.focus();
}
if (fname.value == "") {
errors.unshift("First name must be filled out");
fname.focus();
}
if (errors.length > 0) {
alert("Cannot submit\n" + errors.join("\n"));
return false;
}
}
演示: http : //jsfiddle.net/MKdg5/
你會注意到的第一件事是它更容易閱讀,因為塊是縮進的。 也:
document.forms["myForm"]["fname"]
和document.myForm.fname
來訪問同一個字段。 選擇一種方法並一致地使用它,或 fname
的變量,然后使用fname.value
和fname.focus()
null
而煩惱,因為.value
屬性永遠不會。 嘗試將您的字段驗證為:
if (!x || x.length == 0)
你可以用Hthml 5去required
。 它簡單而整潔。
<form>
First name: <input type="text" name="fname" required="required">
Last name: <input type="text" name="lname" required="required">
<input type="submit" value="Submit">
</form>
注意: Internet Explorer 10,Firefox,Opera和Chrome支持required
屬性。 但Internet Explorer 9及更早版本或Safari中不支持此功能。
在您的validateForm函數上,您的代碼永遠不會檢查第二個字段。 使用return語句時,該函數將停止執行,並返回指定的值。 解決方案是使用嵌套的if語句並檢查一個條件塊中的兩個字段
if (x==null || x=="")
{
if (y==null || y=="")
{
//codes for both are not validated
}
else
{
//codes for just x is not validated
}
}
else
if (y==null || y=="")
{
//codes for y is not validated
}
else
{
//codes for all validated
}
這樣在每個塊中使用return語句不會破壞您的函數執行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.