jquery .val(object) 没有分配正确的值 MVC 5
jquery .val(object) not assigning the correct value MVC 5
我正在一个网站上工作(网络开发新手),我遇到以下代码的问题(如果它是空白,则将结束日期设置为明天):
var date = new Date($('#txtStartDate').val());
var tomorrow = date.getDate() + 1;
$('#txtEndDate').val(tomorrow);
稍后在同一函数中
var myObj = {StartDate: $('#txtStartDate').val(), EndDate: $('#txtEndDate').val() };
我正在使用 MVC 5,当对象到达控制器时,开始日期已设置,但结束日期仍为 null
(还使用 visual studio 2013 更新 1,因此调试中断,因为js 在 cshtml 文件中)。
通过搜索,代码应该可以工作,除非我有一个我没有看到的错误。
编辑:
在找到一种调试代码的方法后,我发现 $('#txtStartDate').val() 只返回 mm/dd/yyyy
而没有提供正确的日期。那是固定的。至于不检查结束日期是否为空,表单上有两种不同的条件,其中结束日期可能为空。对于一个,我需要将结束日期设置为从开始日期算起的第二天,对于另一个,空结束日期是完全有效的。
假设 var date = new Date($('#txtStartDate').val());
return 是一个有效日期,并假设它是今天(2014 年 1 月 29 日),那么
var tomorrow = date.getDate() + 1; // returns 30
将 return 30
不能绑定到 DateTime?
所以控制器中的值将是 null
.
不清楚 IsChecked: $('#chkBox').prop('checked')
的意义是什么 - 它总是 return true
所以你也可以忽略它。
根据你的陈述"set the end date to tomorrow if it is blank"(你的代码甚至没有测试),你的代码应该是
var startDate = $('#txtStartDate').val();
var endDate = $('#txtEndDate').val();
if (!endDate) // test is the end date has been entered
{
var tomorrow = new Date()); // returns Jan 29
tomorrow.setDate(tomorrow.getDate() + 1); // returns Jan 30
// assumes MM/dd/yyyy format
$('#txtEndDate').val(tomorrow.getMonth() + 1 + '/' + tomorrow.getDate() + '/' + tomorrow.getFullYear());
endDate = $('#txtEndDate').val();
}
var myObj = { StartDate: startDate, EndDate: endDate };
$.ajax({
url: '@Url.Action("MvcCall", "My")', // dont hard code urls!!
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: myObj,
success: function (data) {
....
}
});
请注意,如果 txtStartDate
和 txtEndDate
元素只是文本框,那么您需要额外检查以确保它们的值是有效日期
并学习调试客户端代码。按 F12 并在脚本上放置断点并检查值或添加 console.log(yourVar);
语句
我正在一个网站上工作(网络开发新手),我遇到以下代码的问题(如果它是空白,则将结束日期设置为明天):
var date = new Date($('#txtStartDate').val());
var tomorrow = date.getDate() + 1;
$('#txtEndDate').val(tomorrow);
稍后在同一函数中
var myObj = {StartDate: $('#txtStartDate').val(), EndDate: $('#txtEndDate').val() };
我正在使用 MVC 5,当对象到达控制器时,开始日期已设置,但结束日期仍为 null
(还使用 visual studio 2013 更新 1,因此调试中断,因为js 在 cshtml 文件中)。
通过搜索,代码应该可以工作,除非我有一个我没有看到的错误。
编辑:
在找到一种调试代码的方法后,我发现 $('#txtStartDate').val() 只返回 mm/dd/yyyy
而没有提供正确的日期。那是固定的。至于不检查结束日期是否为空,表单上有两种不同的条件,其中结束日期可能为空。对于一个,我需要将结束日期设置为从开始日期算起的第二天,对于另一个,空结束日期是完全有效的。
假设 var date = new Date($('#txtStartDate').val());
return 是一个有效日期,并假设它是今天(2014 年 1 月 29 日),那么
var tomorrow = date.getDate() + 1; // returns 30
将 return 30
不能绑定到 DateTime?
所以控制器中的值将是 null
.
不清楚 IsChecked: $('#chkBox').prop('checked')
的意义是什么 - 它总是 return true
所以你也可以忽略它。
根据你的陈述"set the end date to tomorrow if it is blank"(你的代码甚至没有测试),你的代码应该是
var startDate = $('#txtStartDate').val();
var endDate = $('#txtEndDate').val();
if (!endDate) // test is the end date has been entered
{
var tomorrow = new Date()); // returns Jan 29
tomorrow.setDate(tomorrow.getDate() + 1); // returns Jan 30
// assumes MM/dd/yyyy format
$('#txtEndDate').val(tomorrow.getMonth() + 1 + '/' + tomorrow.getDate() + '/' + tomorrow.getFullYear());
endDate = $('#txtEndDate').val();
}
var myObj = { StartDate: startDate, EndDate: endDate };
$.ajax({
url: '@Url.Action("MvcCall", "My")', // dont hard code urls!!
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: myObj,
success: function (data) {
....
}
});
请注意,如果 txtStartDate
和 txtEndDate
元素只是文本框,那么您需要额外检查以确保它们的值是有效日期
并学习调试客户端代码。按 F12 并在脚本上放置断点并检查值或添加 console.log(yourVar);
语句