我有3个日期字段和一个获取今天日期的链接。一切正常,但在FIREFOX中,如果小于10,则日和月默认为单位数。 9月1日显示为1 9但我希望它显示为01 09.我已尝试使用jquery slice,如本文所述:How do I get Month and Date of JavaScript in 2 digit format?
但它不起作用。有人能指出我正确的方向,我做错了吗?
我的代码:
<div class="input-holder date-fields">
<input type="number" pattern="[0-9]*" inputmode="numeric" min="1" max="31" id="dd" class="dd" placeholder="DD" maxlength="2" />
<input type="number" pattern="[0-9]*" inputmode="numeric" min="1" max="12" id="mm" class="mm" placeholder="MM" maxlength="2" />
<input type="number" pattern="[0-9]*" inputmode="numeric" min="1900" id="yyyy" class="yyyy" placeholder="YYYY" maxlength="4" />
<a class="pick-today">Today</a>
</div>
和jquery:
$("a.pick-today").on("click", function (event) {
var now = new Date();
var day = ("0" + now.getDate()).slice(-2);
$(this).parent('.input-holder').find('input.dd').val(day);
var now2 = new Date();
var month = ("0" + (now2.getMonth() + 1)).slice(-2);
$(this).parent('.input-holder').find('input.mm').val(month);
var now3 = new Date();
var year = now3.getFullYear();
$(this).parent('.input-holder').find('input.yyyy').val(year);
});
小提琴:https://jsfiddle.net/82a6671r/
更新:它在Chrome中工作但在Firefox中没有。有谁知道为什么?
答案 0 :(得分:1)
根据this bug,FF从数字输入字段中删除前导零。
将输入值设置为“003”将在输入中显示“3” 尽管存储了内部值为“003”的窗口。
删除字段类型将绕过此,但您应该了解以后查询字段时可能导致的任何影响。您可能需要parseInt
。
这是一个适用于FF的fiddle。
function leftPad(num, length) {
var result = '' + num;
while (result.length < length) {
result = '0' + result;
}
return result;
}
$("a.pick-today").on("click", function (event) {
var now = new Date();
var day = leftPad(now.getDate(), 2);
var month = leftPad(now.getMonth() + 1, 2);
var year = now.getFullYear();
var parent = $(this).parent('.input-holder');
parent.find('input.dd').val(day);
parent.find('input.mm').val(month);
parent.find('input.yyyy').val(year);
});
答案 1 :(得分:0)
试试这个希望这会有用。
<div class="input-holder date-fields">
<input type="number" pattern="[0-9]*" inputmode="numeric" min="1" max="31" id="dd" class="dd" placeholder="DD" maxlength="2" />
<input type="number" pattern="[0-9]*" inputmode="numeric" min="1" max="12" id="mm" class="mm" placeholder="MM" maxlength="2" />
<input type="number" pattern="[0-9]*" inputmode="numeric" min="1900" id="yyyy" class="yyyy" placeholder="YYYY" maxlength="4" />
<a class="pick-today">Today</a>
</div>
var now = new Date();
var day = ("0" + now.getDate()).slice(-2);
document.getElementById('dd').value = day;
var now2 = new Date();
var month = ("0" + (now2.getMonth() + 1)).slice(-2);
document.getElementById('mm').value = month;
var now3 = new Date();
var year = now3.getFullYear();
document.getElementById('yyyy').value = year;