1
ユーザーがテキストフィールドに入力するときに自動的にhh:mmの書式を設定しようとしています。最初は00:00で、ユーザーが最初の2文字を入力すると、分が入力され、3番目と4番目の文字を入力すると、時間部分が自動入力されます。カスタムスクリプトを作成しましたが、バグがあります。誰かがそれを解決するのを助けることができますか?またはいくつかのJqueryライブラリがある場合は、私にお勧めします。入力マスクも試しました。しかし、それは私の必要条件を持っていません。また、カーソルが右側から始まる必要があります。次のように 私のHTMLはテキストフィールドの型が自動的にhh:mmのように書式設定されている場合
検証を取っvar num_order = "";
var last_input = "";
var length = 0;
var result_str = "00:00";
$('#price').bind('keydown', function(evt) {
//alert(String.fromCharCode(evt.keyCode));
length = num_order.length;
if (length < 4) {
if (evt.keyCode == 8) {
num_order = num_order.substring(0, num_order.length - 1);
} else {
last_input = String.fromCharCode(evt.keyCode);
if (last_input > 0) {
num_order = num_order + last_input;
//alert(num_order);
} else {
}
}
} else {
if (evt.keyCode == 8) {
num_order = num_order.substring(0, num_order.length - 1);
}
}
//alert(num_order);
var result = update_input(num_order);
//$("#price").val("");
$("#price").val(result);
});
var result = update_input(num_order);
//$("#price").val("");
$("#price").val(result);
function update_input(str) {
length = str.length;
if (length == 0) {
result_str = "00:00";
} else if (length == 1) {
//alert(str);
result_str = "00:0" + str;
//alert(result_str);
} else if (length == 2) {
result_str = "00:" + str;
} else if (length == 3) {
var first2 = str.substring(0, 2);
var last1 = str.substring(2, 3);
result_str = "0" + last1 + ":" + first2;
} else if (length == 4) {
var first2 = str.substring(0, 2);
var last2 = str.substring(2, 4);
result_str = last2 + ":" + first2;
}
//$("#price").val("");
//$("#price").val(result_str);
return result_str;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input type="text" id="price" value="00:00" />
なぜ右から左へ?最初にHHとMMよりも入力する方が理にかなっていませんか? –
しかし、要件はそれと同じです。 :( –