繁体   English   中英

jQuery的.val(对象)没有分配正确的值MVC 5

[英]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) {
    ....
  }
});

请注意,如果txtStartDatetxtEndDate元素只是文本框,那么您将需要进行其他检查以确保它们的值是有效日期

并学习调试您的客户端代码。 点击F12,在脚本上放置一个断点,检查值或添加console.log(yourVar); 声明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM