gpt4 book ai didi

javascript - 为什么 Jquery UI 会删除我的输入框?

转载 作者:行者123 更新时间:2023-12-03 10:39:25 27 4
gpt4 key购买 nike

我正在制作一个 .net MVC 应用程序,并且我在 fiddle 中重新创建了该问题.

当我尝试更改日期时,日历只是停留在那里,当我单击屏幕上的其他位置时,日历会消失,但其他日期会被删除。

我只想在选择日期时日历消失,而不是删除其他日期。

    $('#from').datepicker({
inline: true,
showOtherMonths: true,
dateFormat: 'dd.mm.yy.',
firstDay: 1,
changeMonth: true,
changeYear: true,
yearRange: "-50:+50",
onClose: function (selectedDate) {
$("#to").datepicker("option", "minDate", selectedDate);
}
});

$('#to').datepicker({
inline: true,
showOtherMonths: true,
dateFormat: 'dd.mm.yy.',
firstDay: 1,
changeMonth: true,
changeYear: true,
yearRange: "-50:+50",
onClose: function (selectedDate) {
$("#from").datepicker("option", "maxDate", selectedDate);
}
});

$(".dates").change(function () {
var dateFrom = $("#from").val();
//check that there is data before saving into sessionStorage
if (dateFrom.value.length >= 8)
sessionStorage.setItem("fromDate", this.value)

var dateTo = $("#to").val();
//check that there is data before saving into sessionStorage
if (dateTo.value.length >= 8)
sessionStorage.setItem("toDate", dateTo)

if (dateTo != null && dateFrom !=null) {
$.ajax({
url: '/MainPage/DateSessionCreate',
type: 'POST',
data: { "dateTo": dateTo, "dateFrom": dateFrom },
dataType: 'json'
});
}
else {
alert("one of the dates is null");
}
});

var today = new Date();
var curr_date = today.getDate();
var curr_month = today.getMonth();
curr_month++;
var curr_year = today.getFullYear();
var toDate = "";
//check if there's a to Date in sessionStorage
if (sessionStorage.getItem("toDate")) {
toDate = sessionStorage.getItem("toDate");
sessionStorage.setItem("toDate", toDate);
} else {
toDate = curr_date + "." + curr_month + "." + curr_year;
sessionStorage.setItem("toDate", toDate);
if (toDate != null) {
$.ajax({
url: '/MainPage/DateSessionCreate',
type: 'POST',
data: { "dateTo": toDate},
dataType: 'json'
});
}
}
document.getElementById("to").value = toDate;


today.setDate(today.getDate() - 7);
var new_date = today.getDate();
var new_month = today.getMonth();
new_month++;
var new_year = today.getFullYear();
var fromDate = "";
//check if there's a from Date in sessionStorage
if (sessionStorage.getItem("fromDate")) {
console.log("if");
fromDate = sessionStorage.getItem("fromDate");
sessionStorage.setItem("fromDate", fromDate);
} else {
console.log("else");
fromDate = new_date + "." + new_month + "." + new_year;
sessionStorage.setItem("fromDate", fromDate);
if (fromDate != null) {
$.ajax({
url: '/MainPage/DateSessionCreate',
type: 'POST',
data: { "dateFrom": fromDate },
dataType: 'json'
});
}

}
document.getElementById("from").value = fromDate;

我承认,我仍然是一个新手,如果我知道如何让日期选择器在输入框中写入日期,整个代码可能会被缩短(但是当我使用“defaultDate:-7”时,它只会突出显示日历中的日期)。这就是我创建日期格式并手动将其写入输入框中的原因。附加代码是为了确保页面重新加载后日期保留在那里,还有一些代码是为了向 Controller 发送信息

EDIT1 有人指出 onClose 函数混淆了。虽然它确实解决了删除问题,但它产生了另一个问题 - 我故意放置这些来限制日期范围。这样“结束”日期就不能早于“开始”日期。也许还有另一种方法来限制这个?

最佳答案

您可以将日期格式更改为末尾不带 .:

dateFormat: 'dd.mm.yy',

此外,$("#from").val() 的返回值是字符串,因此它没有 value 属性。您可以检查字符串的长度:

if (dateFrom.length >= 8)

检查this fiddle

要设置日期选择器的日期,您可以使用setDate方法:

var today = new Date();
$('#to').datepicker("setDate", today);
$('#from').datepicker("setDate", new Date(today.setDate(today.getDate() - 7)));

关于javascript - 为什么 Jquery UI 会删除我的输入框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28851782/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com