1

この入力フィールドで AM/PM なしで 12 時間制を検証しようとしています。これにアプローチする最良の方法は何ですか?私が現在持っているもののうち、うまくいかないものをリストしました。これにどうやってアプローチするかについて、数日間探していました。

<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;
}
4

1 に答える 1

0

次の関数は正常に動作するように見えます:

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の時間入力タイプで十分であると思います。その場合、入力タイプを「時間」に変更するだけで十分です。

于 2013-08-30T23:18:55.780 に答える