2013-03-05 99 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