[英]jquery .val(object) not assigning the correct value MVC 5
我正在一个网站上(Web开发的新手),以下代码有问题(如果将结束日期设置为空白,则将结束日期设置为明天):
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 Update 1,因此由于js位于cshtml文件中,因此调试被破坏了)。
通过搜索,代码应该可以正常工作,除非我没有看到错误。
编辑:
在找到一种调试我的代码的方式之后,我发现$('#txtStartDate')。val()返回的只是mm/dd/yyyy
而没有提供正确的日期。 那是固定的。 至于不检查结束日期是否为空的问题,表单上有两种不同的条件,其中结束日期可以为空。 对于一个我需要将结束日期设置为从开始日期起的第二天,对于另一个我则将结束日期设为空。
假设var date = new Date($('#txtStartDate').val());
返回一个有效日期,并假设其为今天的日期(2014年1月29日),则
var tomorrow = date.getDate() + 1; // returns 30
将返回不能绑定到DateTime?
30
DateTime?
因此控制器中的值将为null
。
目前尚不清楚IsChecked: $('#chkBox').prop('checked')
的意思是IsChecked: $('#chkBox').prop('checked')
-它始终返回true
因此您也可以忽略它。
根据您的陈述“如果将结束日期设置为空白,则将结束日期设置为明天” (您的代码甚至没有进行测试),则您的代码应为
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);
声明
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.