簡體   English   中英

如何進行輸入

[英]How to make input required

我想要的是,當兩個字段即fnamelname保持為空時,彈出窗口應顯示兩個消息,即“必須填寫名字”,“必須填寫姓氏”。

我需要做哪些修改?

<!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.valuefname.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM