如何 post 有条件地输入字段

How to post input fields conditionally

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

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

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

我的问题:当该字段被禁用时,如何解决此问题以获取值 POSTed?它应该在 JS 中完成...

我有一个类似的要求,我所做的是,创建了一个 class ,通过删除鼠标事件和稍微设置样式

使文本框看起来像禁用的
[https://codepen.io/DawsonMediaD/pen/Dqrck][1]

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

已修复,在下拉框的 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();
    }
 }