【问题标题】:How to post input fields conditionally如何有条件地发布输入字段
【发布时间】:2016-06-13 06:40:15
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你能展示你的工作代码吗?所以我们会更容易给出答案。你是通过 JS 发帖还是使用@Html.BeginForm?
  • Post 是通过 Razor 中使用 beginform 的常规提交按钮。

标签: javascript c# razor kendo-dropdown


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-11-21
      • 2013-01-28
      • 2016-09-18
      • 1970-01-01
      • 2016-07-13
      • 2021-03-03
      • 2014-06-26
      • 1970-01-01
      • 2019-08-26
      相关资源
      最近更新 更多