2013-08-30 8 views
1

Я пытаюсь проверить 12-часовое время без AM/PM в этом поле ввода. Каков наилучший способ приблизиться к этому? Я перечислил то, что у меня есть в настоящее время, которое не работает. Надеюсь пару дней на то, как подойти к этому, не повезло.Проверка времени в виджете Dashcode

<input id="dtstartf" type="text" name="time" value="08:00" class="apple-textfield apple- no-children" apple-part="com.apple.Dashcode.part.textfield" onkeypress="time(event)"> 

function time(event) { 
    var regex = ["[0-2]", 
    "[0-4]", 
    ":", 
    "[0-6]", 
    "[0-9]", 
    "(A|P)", 
    "M"], 
    string = $(this).val() + String.fromCharCode(e.which), 
    b = true; 
    for (var i = 0; i < string.length; i++) { 
    if (!new RegExp("^" + regex[i] + "$").test(string[i])) { 
     b = false; 
    } 
    } 
    return b; 
} 
+0

Он не будет работать в каждом браузере, но почему бы не использовать тип ввода времени HTML5? Просто измените тип = «текст» на type = «время», и у вас есть проверка на стороне клиента и виджет выбора времени в большинстве браузеров. Вы также можете поддерживать поддержку старых браузеров, которые не поддерживают его, например, https://github.com/dsheiko/HTML5-Form-Shim –

ответ

0

Следующая функция выглядит работать OK:

function validateTime(time) { 
    // Check pattern 
    var pattern = /^\d{1,2}:\d{1,2}$/; 
    if (!pattern.test(time)) { 
     return false; 
    } 
    // Split them and check the individual values 
    var splitvalues = time.split(':'); 
    if (splitvalues[0] > 12 || splitvalues[0] < 1 || splitvalues[1] < 0 || splitvalues[1] > 59) { 
     return false; 
    } 
    // If we get to this point, everything should be valid 
    return true; 
} 

Однако, как вы уже конкретно упоминается, что это для виджета Dashcode, я думаю, что время тип ввода HTML5 может быть достаточно, в в этом случае достаточно просто изменить тип ввода на «время».

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

  • Нет связанных вопросов^_^