2014-02-13 3 views
0

Использование 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; 

Теперь для того, чтобы достичь того, что я пытаюсь сделать, я могу поставить больше условий в предложении, если только она не кажется эффективной (т.е. x!="00:01"||x!="00:02"||x!="00:03"...etc.)

Есть, вероятно, тонны способов делая это, но некоторые рекомендации/предложения будут высоко оценены.

+0

Вам необходимо найти регулярные выражения - вот дубликат вопроса на этом сайте: http://stackoverflow.com/questions/11400822/javascript-regex-validate-time –

+0

@RobBaillie Он заблокирован в той части, где он хочет для проверки пустого входного значения. То, что я понял из его вопроса. – Konza

+0

@Rob Спасибо, сэр, за головы! – smokedMeat

ответ

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

Итак, вы идете. , , этот код должен обеспечивать как формат , так и действительность введенного значения.

+0

Вы, человек ROCK! Красиво сделано сэр! – smokedMeat

0

поместите требуемый атрибут в свой тег ввода. Это проверит, пусто ли текстовое поле или нет.

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

Чтобы проверить правильное время вы можете приписать шаблон с регулярным выражением

Вот дополненная скрипку: http://jsfiddle.net/shyamchandranmec/C8B8t/1/

+0

@ Konza Спасибо человек. Мне кажется, мне нужно немного поиграть с RegEx. – smokedMeat

+1

** Примечание: ** Это работает только для браузеров, совместимых с HTML5, которые поддерживают новые входные атрибуты формы (которые не включают IE9 или ранее). – talemyn

0

Я думаю, что самый простой способ будет использовать Regex.

Некоторые док/учебник: 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!'); 
} 
+0

Спасибо большое Мэтт! – smokedMeat

+0

Добро пожаловать. Если он работает и отвечает на ваш вопрос, не забудьте принять ответ, пожалуйста. – Matt

Смежные вопросы