如何在 Firefox input[type=date] 中重置日期?
How to reset a date in Firefox input[type=date]?
Firefox v57.0.1 支持 HTML 输入标签的“日期”属性。
我想在 jQuery 中当用户单击这样的单选按钮时重置日期值:
为了得到这个结果:
我的jQuery代码:
$("input[name=f_foo_duration]").click(function() {
if ($("#f_foo_duration_until").is(':checked')) {
$("#f_foo_duration_date").attr("readonly", false);
}else{
$("#f_foo_duration_date").attr("readonly", true);
$("#f_foo_duration_date").attr( "value", new Date() ); <-- here
}
});
我测试了:
- val("")
- val(空)
- val("0000-00-00")
- val(新日期())
没有成功...有解决办法吗?
要设置输入元素的值,请使用 jQuery 函数 elem.val("...")
:
$(function() {
$('[name="contact"]:radio').on("change", function() {
if ($("#f_foo_duration_until").is(":checked")) {
let now = new Date().toISOString().slice(0,10);
$("#f_foo_duration_date").val(now);
$("#f_foo_duration_date").attr("readonly", false);
} else {
$("#f_foo_duration_date").val("YYYY-MM-DD");
$("#f_foo_duration_date").attr("readonly", true);
}
});
});
#my-form > * {
vertical-align: middle;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="my-form">
<input type="radio" id="f_foo_duration_until" name="contact" value="email">
<label for="f_foo_duration_until">Valid until</label>
<input id="f_foo_duration_date" name="f_foo_duration" type="date" value="2017-06-01">
</input>
<input type="radio" id="f_foo_duration_unlimited" name="contact" value="unlimited">
<label for="f_foo_duration_unlimited">Unlimited</label>
</form>
我们需要将其转换为 YYYY-MM-DD 格式。
$("#f_foo_duration_date").val(new Date().toISOString().slice(0,10));
有关转换格式的更多信息,请参阅此问题:Format JavaScript Date to yyyy-mm-dd
对于因稍微不同的问题而达到此 post 的任何人:
对于 chrome 它适用于 val("")
由于 readonly
属性不适用于 Firefox(为什么?)
如果您删除 'readonly',val("")
和变体在 Firefox 上运行良好。
如果您准备好使用 jQuery 清除或重置,请尝试此代码:
$("input[type=date]").val("");
Firefox v57.0.1 支持 HTML 输入标签的“日期”属性。
我想在 jQuery 中当用户单击这样的单选按钮时重置日期值:
为了得到这个结果:
我的jQuery代码:
$("input[name=f_foo_duration]").click(function() {
if ($("#f_foo_duration_until").is(':checked')) {
$("#f_foo_duration_date").attr("readonly", false);
}else{
$("#f_foo_duration_date").attr("readonly", true);
$("#f_foo_duration_date").attr( "value", new Date() ); <-- here
}
});
我测试了:
- val("")
- val(空)
- val("0000-00-00")
- val(新日期())
没有成功...有解决办法吗?
要设置输入元素的值,请使用 jQuery 函数 elem.val("...")
:
$(function() {
$('[name="contact"]:radio').on("change", function() {
if ($("#f_foo_duration_until").is(":checked")) {
let now = new Date().toISOString().slice(0,10);
$("#f_foo_duration_date").val(now);
$("#f_foo_duration_date").attr("readonly", false);
} else {
$("#f_foo_duration_date").val("YYYY-MM-DD");
$("#f_foo_duration_date").attr("readonly", true);
}
});
});
#my-form > * {
vertical-align: middle;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="my-form">
<input type="radio" id="f_foo_duration_until" name="contact" value="email">
<label for="f_foo_duration_until">Valid until</label>
<input id="f_foo_duration_date" name="f_foo_duration" type="date" value="2017-06-01">
</input>
<input type="radio" id="f_foo_duration_unlimited" name="contact" value="unlimited">
<label for="f_foo_duration_unlimited">Unlimited</label>
</form>
我们需要将其转换为 YYYY-MM-DD 格式。
$("#f_foo_duration_date").val(new Date().toISOString().slice(0,10));
有关转换格式的更多信息,请参阅此问题:Format JavaScript Date to yyyy-mm-dd
对于因稍微不同的问题而达到此 post 的任何人:
对于 chrome 它适用于 val("")
由于 readonly
属性不适用于 Firefox(为什么?)
如果您删除 'readonly',val("")
和变体在 Firefox 上运行良好。
如果您准备好使用 jQuery 清除或重置,请尝试此代码:
$("input[type=date]").val("");