如何有条件地发布输入字段

时间:2016-06-13 06:40:15

标签: javascript c# razor kendo-dropdown

我有一个MVC(Razor)网络应用程序。该表单有2个字段,一个下拉框(Kendo)和一个日期输入字段。

用户在下拉列表中进行更改后,我的第二个输入字段将根据下拉框中选择的类型启用或禁用。当输入字段被禁用时,我使用默认值填充输入。

当用户提交表单时,我只在第二个字段启用时在viewmodel中发布第二个表单字段值,禁用时不会发布该值。我知道这是HTML中的一种常见模式,禁用的字段不属于POST。

我的问题:如何在禁用字段时解决此问题以获取值?它应该在JS ...

中完成

2 个答案:

答案 0 :(得分:0)

我有类似的要求,我做的是,创建了一个类,通过删除鼠标事件和样式,使文本框显示为禁用

[https://codepen.io/DawsonMediaD/pen/Dqrck][1]

有点棘手,就在帖子之前,启用所有这些

答案 1 :(得分:0)

修正了它,在下拉框的onchange处理程序中附加了这个JS代码:

var defaultDateValue = "2017-01-04"; //just for demo
var $effectiveToInput = $("#@Html.IdFor(m => m.EffectiveToDate)");
$effectiveToInput.parent().append("<input type=\"hidden\" name=\"@Html.NameFor(m => m.EffectiveToDate)\" id=\"@Html.NameFor(m => m.EffectiveToDate)\" value=\"" + defaultDateValue +"\" />");

对于其他类型,我用支票清除隐藏的字段:

function removeHiddenEffectiveToDateField() {
    var $effectiveToInput = $("#@(Html.IdFor(m => m.EffectiveToDate))[type = hidden]");
    if (null !== $effectiveToInput) {
       $effectiveToInput.remove();
    }
 }