2014-09-22 94 views
-2

我有一个表格,我登上一张桌子。 我希望能够验证这些值之前,他们是 添加到表中。如何将表单值限制为某些数字的值?

我想要一个"time#cnt#"是一个数字是一个整数 或一个十进制只有.5。 例如,如果用户输入1.2并且他们尝试提交它,他们将得到 错误消息。他们可以输入1,1.5,.5,2.5等。

下面是我有的形式,对JS来说是新的我不知道我会怎么做。 我在这个网站上看到过以及其他如何验证数字。

<cfform method="post" action="time.cfm" > 
<table >  
    ...... 
    <td><input type="text" size="3" maxlength="5" name="time#cnt#" id="add_time" value=""></td>   
    ..... 

    </table> 
    <p><input type="submit" class="submit" name="Submit" value=""></p> 
</cfform> 
+2

欢迎ST ackoverflow!你做了什么努力? – 2014-09-22 19:31:43

+0

是[JS表单验证](http://www.w3schools.com/js/js_form_validation.asp)你在找什么? – Compass 2014-09-22 19:31:52

回答

2

下面是一些代码,将在所有的浏览器:

form.onsubmit = function(e) { 
 
    var value = document.getElementById("add_time").value; 
 
    if (!isNumber(value) || (value % 0.5) !== 0) { 
 
     e.preventDefault(); 
 
     alert("Bad input"); 
 
     return false; 
 
    } 
 
} 
 

 
function isNumber(n) { 
 
    return !isNaN(parseFloat(n)) && isFinite(n); 
 
}
<form id="form" method="post" > 
 
    <input type="text" size="3" maxlength="5" name="time#cnt#" id="add_time" value="" /> 
 
    <input type="submit" class="submit" name="Submit" value="Submit" /> 
 
</form>

+0

'价值%.5'应该同样好 – 2014-09-22 20:01:24

+0

@StephanMuller当然你是对的 - 我正在推翻它。更新回答 – dave 2014-09-22 20:07:09

+0

有没有一个原因,它不能在IE 9上工作?在Firefox和Chrome上工作 – jfishbow 2014-09-22 21:29:23

4

如果您不介意坚持modern browsers only,那么您可以使用HTML5的验证。没有JavaScript要求。在这种情况下,你想类型的“数字”的输入,并设置其属性step为“0.5”

<input type="number" step=".5" /> 

现在,如果你把任意数量的小数不是.5浏览器将显示一个错误并阻止提交。请注意,旧版浏览器会将其视为文本输入并让所有内容都通过,但无论如何您都应该进行服务器端验证。即使是一个JavaScript验证可以绕过。

的jsfiddle:http://jsfiddle.net/wtwpz1u9/1/

+0

这是一个很好的解决方案,但由于浏览器支持,我需要它在IE8上工作,它与所有其他 浏览器 – jfishbow 2014-09-22 22:59:53

1

尝试HTML5验证:

<input type="number" step="0.5" min="1" value="1">

相关问题