2017-02-14 61 views
1

這是一個簡單的代碼,我不知道我在哪裏出錯了。名稱驗證工作如果沒有輸入名稱,但它不顯示結果時有效名稱被輸入。Javascript驗證(點擊提交後輸入不顯示)

這裏是我的代碼:

我在HTML和JavaScript只是新的,希望我會從這裏得到幫助。謝謝

function checkname(form) { 
 
    var eobj = document.getElementById('MITname'); 
 
    var jname = form.Name.value; 
 
    var error = false; 
 

 
    eobj.innerHTML = ''; 
 

 
    if (jname == '') { 
 
     error = "Name is required!"; 
 
     var error2 = error.fontcolor("red"); 
 

 
    } 
 
    if (error) { 
 
     if (hasFocus == false) { 
 
     form.Name.focus(); 
 
     hasFocus = true; 
 
     } 
 
     eobj.innerHTML = error2; 
 
     return false; 
 
    } 
 
    return true; 
 
    } 
 

 
    function showinput() { 
 
    document.getElementById('namedisplay').innerHTML = document.getElementById('MITname').value; 
 
    } 
 

 

 
    function validate() { 
 
    hasFocus = false; 
 
    var form = document.forms['form']; 
 
    var ary = [checkname]; 
 
    var rtn = true; 
 
    var z0 = 0; 
 
    for (var z0 = 0; z0 < ary.length; z0++) { 
 
     if (!ary[z0](form)) { 
 
     rtn = false; 
 
     } 
 
    } 
 
    return rtn; 
 
    }
<form action="" name="form" onsubmit="return validate()"> 
 
    <tr> 
 
    <td align="right">Name:<font color="red">*</font> 
 
    </td> 
 
    <td> 
 
     <input type="text" name="Name" /> <span id="MITname"> </span> 
 
    </td> 
 
    </tr> 
 
    <br/> 
 
    <input type="submit" value="Submit" onclick="showinput()" /> 
 
    <br/> 
 
    <label>Your input:</label> 
 
    <p><span id="namedisplay"></span> 
 
    </p> 
 
</form>

回答

0

此列舉幾個問題。 (另外,歡迎來到Web開發!)

首先,你從來沒有真正創建變量hasFocus。所以你永遠不會真的檢查它是真是假。

其次,當你創建error2意味着它只會是if()塊它是在創建中訪問。因此,在下面的if(error)塊當您嘗試訪問它,它會返回undefined。第三,當您創建error時,您將值設置爲false,它指示布爾類型,但稍後將其值設置爲一個字符串(該字符串絕對不是布爾值)。

四,行var ary = [checkname];令我困惑。我知道你試圖將名稱(從輸入?)轉換爲數組,但這不是實現它的方法。您可以使用string.charAt(index)訪問名稱的每個字符,因此創建數組並非真的必要。

五,你的validate()作爲一個整體功能是非常混淆。我不知道你想要做什麼。看起來你的教學來源可能會誤導你,或者你沒有密切關注。

我可以繼續,但是這些(除其他外)問題實際上很難確切地發現哪裏出了問題,而沒有深入挖掘。我不想爲你寫這篇文章,所以我的建議是重新開始,也許可以從其他來源獲得更多的教程。 (不同的YouTube頻道等)

+0

我假設驗證函數應該創建一個包含所有表單的數組,然後爲每個表單調用'checkname' ...而不是迭代1個變量數組來調用'checkname' – abc123

+1

這是我在課堂上的第一天,這是自我教導..我我不知道我在編碼什麼,但我打算做一個JavaScript驗證..知道這個代碼是可怕的,這有點讓人失望.. *嘆*感謝壽,我很感激它。 –

+0

@ Geni-sama,別太難過,我們都必須從某個地方開始。我建議的做法是在線觀看一些「Javascript intro」視頻,並看看W3學校,因爲它們對初學者有很大的幫助。 – FibreChips

0

我的問題是驗證。如果輸入空白名稱,則應在名稱文本框旁邊顯示一條錯誤消息,指示輸入有效的名稱。

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title>JAVASCRIPT FORM VALIDATION</title> 
 
\t 
 
    <script type="text/JavaScript"> 
 
     function showMessage() 
 
\t \t { 
 
      var Name = document.getElementById("Name").value; 
 
      displayname.innerHTML= Name; 
 
\t \t \t 
 
\t \t \t var Email = document.getElementById("Email").value; 
 
\t \t \t displayemail.innerHTML= Email; 
 
\t \t \t 
 
\t \t \t var Website = document.getElementById("Website").value; 
 
\t \t \t displaywebsite.innerHTML= Website; 
 
\t \t \t 
 
\t \t \t var Comment = document.getElementById("Comment").value; 
 
\t \t \t displaycomment.innerHTML= Comment; 
 
\t \t \t 
 
\t \t \t var nameerror=''; 
 
\t \t \t var emailerror=''; 
 
\t \t \t var websiteerror=''; 
 
\t \t \t var commenterror=''; 
 
\t \t \t 
 
\t \t \t \t if (displayname.innerHTML=='') 
 
\t \t \t \t { 
 
\t \t \t \t nameerror = 'Please enter a valid name'; 
 
\t \t \t \t return false; 
 
\t \t \t \t } 
 
\t \t \t \t return true; 
 
     } 
 
    </script> 
 
\t 
 
</head> 
 

 
<body> 
 

 
Name: <input type="text" id = "Name"> <span id = "nameerror"> </span> 
 
<br></br> 
 
Email: <input type="text" id = "Email"> 
 
<br></br> 
 
Website: <input type="text" id = "Website"> 
 
<br></br> 
 
Comnent: <textarea cols="35" rows="7" id="Comment"> </textarea> 
 
<br></br> 
 

 
<input type="submit" onclick="showMessage()" value="submit" /> 
 

 
\t \t \t <p>Name: <span id = "displayname"></span> </p> 
 
\t \t \t <p>Email: <span id = "displayemail"></span> </p> 
 
\t \t \t <p>Website: <span id = "displaywebsite"></span> </p> 
 
\t \t \t <p>Comment: <span id = "displaycomment"></span> </p> 
 

 

 
</body> 
 
</html>

0
<form action="" name="form" onsubmit="return validate()"> 
    <tr> 
    <td align="right">Name:<font color="red">*</font> 
    </td> 
    <td> 
     <input type="text" name="Name" /> <span id="MITname"> </span> 
    </td> 
    </tr> 
    <br/> 
    <input type="button" value="Submit" onclick="showinput()" /> 
    <br/> 
    <label>Your input:</label> 
    <p><span id="namedisplay"></span> 
    </p> 
</form> 

只是刪除類型=在你的代碼「提交」,將提交你的頁面,同時點擊,一旦你點擊提交的是改變POST數據,因此,使用按鈕

類型