表单验证 - 以特定格式接受值

时间:2014-02-13 16:27:56

标签: javascript php jquery mysql

使用HTML,PHP,Javascript,mySQL。

尝试确认用户必须使用数字在文本字段中以“ - : - ”(例如01:30,10:00等)格式输入时间。

如果以“ - : - ”以外的任何其他格式输入,则会要求用户输入正确的格式。

一旦用户点击提交按钮,它就会在文本字段旁边显示警告/警告消息,而不是弹出窗口。

它是以字符串形式收到的,但我将其保存为mySQL中的“时间”类型以达到我的目标。

我可以做部分,我可以确认该字段不能留空,但却遇到了这个。

function validateForm()

var time =document.forms["entrypage.php"]["eventTime"].value;
if (time==null || time=="")

  alert("Please Enter time in --:-- format");
  return false;

现在为了实现我想要做的事情,我可以在if子句中加入更多条件,但它似乎效率不高(即x!="00:01"||x!="00:02"||x!="00:03"...etc。)

可能有很多方法可以做到这一点,但我们非常感谢一些指南/建议。

3 个答案:

答案 0 :(得分:0)

为输入标记添加必需属性。这将检查文本框是否为空。

<input type = "text" pattern='\d{2}[:]\d{2}' required>

要检查正确的时间,您可以使用正则表达式

模式化属性

这是更新的小提琴:http://jsfiddle.net/shyamchandranmec/C8B8t/1/

答案 1 :(得分:0)

我认为最简单的方法是使用正则表达式。

一些文档/教程: http://www.w3schools.com/jsref/jsref_obj_regexp.asp https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

我认为这应该有效,但它有点像uggly:

if(/[0-9][0-9][:][0-9][0-9]/.test(time)){
    alert('correct');
} else {
    alert('wrong input!');
}

答案 2 :(得分:0)

要进行全面检查(格式和值),我会使用以下代码:

var time = document.forms["entrypage.php"]["eventTime"].value;
var isValidTime = false;

if (time !== null && /^[0-1][0-9]:[0-5][0-9]$/.test(time)) {
    var hourValue = parseInt(time.split(":")[0]);

    if (hourValue > 0 && hourValue <= 12) {
        isValidTime = true;
    }
}

return isValidTime;

要解决这个问题,你基本上有三张支票:

  • time !== null - 是否有值(您可能还想检查undefined
  • /^[0-1][0-9]:[0-5][0-9]$/.test(time) - 检查是否有4个数字,第2个和第3个数字之间有冒号(:),并将第1个数字限制为0或1,第3个数字为0-5。如果您想支持24小时格式,请将第一个字符检查更改为[0-2]

一旦您知道该值与正确的格式匹配,那么您需要检查以确保小时值有效(在所有“19”通过正则表达式检查后,但不是有效的小时值)。有两个步骤:

  • parseInt(time.split(":")[0]); - 将时间分成两部分,然后检索小时值,Integer
  • hourValue > 0 && hourValue <= 12 - 检查以确保该值介于1和12之间。如果您想支持24小时格式,请将第二项检查更改为hourValue <= 24

所以你去吧。 。 。该代码应强制执行格式输入值的有效性。