2013-03-05 127 views
-3

我有一個表格,我米試圖提交時,只允許特定的值。
允許的是1-8,n和空格。就這些。
我已經開始了1-8,但對於n和空白我不知道。
只允許特定的值只有

function check(form) { 
    if (form.scores.value > 8 || form.scores.value <= 0) { 
     self.alert(form.scores.value + " is an invalid value! Allowed values are 1 to 8, n and blank"); 
     form.scores.focus(); 
    } 
} 

HTML

<input type="text" name="scores" id="scores" maxlength="1" size="2" value="<%= number %>" /> 

HTML:

<input type="button" onClick="check(this.form)" value="Edit" /> 

請幫

感謝

+0

你所說的「n」的意思?字符串'「n」'? – bfavaretto 2013-03-05 14:44:20

+1

如果你想從1到8,N和空白,爲什麼不使用listbox? – Toping 2013-03-05 14:46:24

+0

是字符串n。着做出來 – 2013-03-05 14:47:33

回答

1

見下面的重構和修復。

<script> 

function check(form_field) 
{ 

    var allowed = /^[1-8n\s]{1}$/; 

    var field = document.getElementById(form_field).value; 

    if (field.match(allowed)) { 
    document.myform.onsubmit = function() { 
    return true; 
    } 
    } else if (field.length == 0) { 
    document.myform.onsubmit = function() { 
    return true; 
    } 
    } else { 
    alert(field + " is an invalid value! Allowed values are 1 to 8, n and blank"); 
    } 

} 

</script> 


<form name="myform" onsubmit="return false"> 

<input type="text" name="scores" id="scores" maxlength="1" size="2" value="<%= number %>"/> 
<input type="submit" onClick="check('scores')" value="Edit" /> 
</form> 

使用JavaScript的正則表達式來檢查值。可能不需要「{1}」,但重複一次的模式僅適用於模式。

隨意只是抓住正則表達式的一部分作爲我已經改變了檢查()函數的機制,以便它被切換的表格字段ID,並從識別的值。

它可以確保只提交表單,如果條件都被滿足。

編輯:
或者檢查出listbox一個不錯的jQuery插件來做到這一點(如@Ark提到的)

希望幫助

+0

檢查我的評論 – Toping 2013-03-05 14:48:03

+0

我是假設空白是'「」''不」「'。 – bfavaretto 2013-03-05 14:53:04

+0

上面的歡呼似乎很好,不需要jquery – 2013-03-05 14:55:52