2015-12-22 49 views
0

如果沒有輸入任何內容,我需要在提交時將表單輸入值設置爲-1。 到目前爲止,我有這個功能,但它不會將值更改爲-1。JavaScript驗證更改提交的值

<form action="validate.php" 
     method="post" onsubmit="return validate()" > 

<input type="text" name="CategoryID" size="3" maxlength="3" onkeyup="checkCategoryID(this)"/> 

function validate() 
{ 
    var catID; 
    catID = document.getElementsByName("CategoryID"); 

    if (catID.value == "") 
     catID.value = -1; 
    return true; 

} 
+0

當你在js中比較字符串時你應該使用=== – miechooy

+0

謝謝,我不知道。 – Rhys

回答

1

你的代碼有很多問題。首先,JavaScript代碼應該包含在單獨的JavaScript文件中,或嵌入在script標記中。

其次,你要使用return false而不是返回true。

此外,表單的默認行爲是要提交。您可能想要傳入參數event並使用event.preventDefault方法。

此外,getElementsByName返回一個集合不是一個單一的元素。你需要在一個索引通過像這樣

getElementsByName("categoryID")[0]; 

form標籤需要關閉標籤</form>

catID.value == ""正在搜索空字符串。您可以改用布爾值。這相當於!catID.value

這是我的臨時解決方案。

<form action="validate.php" 
     method="post" onsubmit="validate()" > 

<input type="text" name="CategoryID" size="3" maxlength="3" onkeyup="checkCategoryID(this)"/> 
</form> 

<script> 

    var catID = document.getElementsByName("CategoryID")[0]; 

    function validate() { 

     if (!catID.value) { 
      catID.value = -1; 
      return false; 
     }   
    } 
</script> 
+0

感謝理查德的詳細回覆,非常感謝。如果將來,我會發布整個表單代碼。 – Rhys