如何在日期类型字段中设置值
How to set value in Date type field
我有下面的HTML和JS,我使用MVC。下面是场景
当"Filter"对象参数传递给HTML时,我无法从KO "optionsAfterRender"函数分配日期字段。
HTML (Razor View):
var Filter =(Project.Models.Entity) ViewData["Filter"];
@if (Filter != null)
{
<div id="sdate">
<label>From Senior Date</label>
<input id="sdateVal" type="date" data-bind="value:SeniorDate,optionsAfterRender:function(){setOptionSrDate(@Filter.DateSenior.Value.ToString("yyyy-MM-dd"));}">
</div>
<div id="jdate">
<label>To Junior Date</label>
<input id="jdateVal" type="date" data-bind="value:JuniorDate,optionsAfterRender:function(){setOptionJrDate(@Filter.DateJunior.Value.ToString("yyyy-MM-dd"));}">
</div>
}
JS(淘汰赛):
self.setOptionSrDate = function (x) {//Sr Date
$("#sdateVal").val(x);//this does not assign the value
self.SeniorDate(x);//this does not assign the value
};
问题可能是日期的格式。试试这个。
var now = new Date();
var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);
var today = now.getFullYear()+"-"+(month)+"-"+(day) ;
$('#datePicker').val(today);
看起来好像你想用HTML元素中的一个值来初始化你的可观察对象。
理想情况下,您希望能够这样做:
<input type="date" value="(@Filter.DateSenior.Value.ToString("yyyy-MM-dd"))" data-bind="value:SeniorDate">
然而,这将不起作用,因为我相信你已经尝试过了,因为value
绑定的默认行为不会在绑定初始化时用dom元素上的值更新绑定的可观察对象。
但是有一个解决方案,你可以创建一个自定义绑定,做所有现有的value
绑定所做的和你想要的行为,这是初始化的值的dom元素的可观察对象。
使用此绑定:
ko.bindingHandlers.value2 = {
init: function(element, valueAccessor, allBindings) {
var observable = valueAccessor(),
value = element.value;
observable(value);
ko.bindingHandlers.value.init.apply(this, arguments);
},
update: function(element, valueAccessor, allBindings) {
ko.bindingHandlers.value.update.apply(this, arguments);
}
};
这将使您能够这样做:
<input type="date" value="(@Filter.DateSenior.Value.ToString("yyyy-MM-dd"))" data-bind="value2:SeniorDate">
请看下面的工作代码片段:
ko.bindingHandlers.value2 = {
init: function(element, valueAccessor, allBindings) {
var observable = valueAccessor(),
value = element.value;
observable(value);
ko.bindingHandlers.value.init.apply(this, arguments);
},
update: function(element, valueAccessor, allBindings) {
ko.bindingHandlers.value.update.apply(this, arguments);
}
};
var vm = {
seniorDate: ko.observable()
};
ko.applyBindings(vm);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div>
<input type="date" value="2015-07-20" data-bind="value2: seniorDate" />
</div>
<div>
<p data-bind="text: seniorDate"></p>
</div>
RP Niemeyer在这里回答了一个类似的问题。
相关文章:
- 而循环只设置php中输入字段中的第一个值
- Extjs图表:动态设置字段
- 正在设置字段和'带有'陈述
- mailto:未在 GroupWise 8 消息中正确设置字段
- JavaScripts,AJAX,PHP:获取json字符串后无法设置字段值
- 使用 JQuery 重新设置字段值
- jQuery - 在通过加载函数加载操作页面时在操作页面中设置字段值
- 如何在高位图表中设置字段名
- 在Lotus Notes Web窗体中设置字段的JavaScript
- 从内部对象javascript设置字段值
- 如何在像这样的javascript对象中设置字段
- 是否有一种方法可以更新或设置字段,就像upsert对文档所做的那样
- 设置字段在不同的框架从javascript
- javascript:设置字段值并提交表单
- React Redux-如何在应用程序状态中设置字段
- 在 extjs 或 getCount() 的存储中动态设置字段在模型中给出 0
- CRM 2011 onChange 事件处理程序在 JavaScript 设置字段时未触发
- 我如何使用javascript在输入选择(HTML)中设置字段
- 如何设置字段的需求级别
- 我设置字段值w/ javascript, onchange未触发.可选择的解决方案