【问题标题】:using `@using (html.beginform())` JavaScript is Disabled?使用 `@using (html.beginform())` JavaScript 被禁用?
【发布时间】:2016-07-28 22:52:03
【问题描述】:

在禁用 JavaScript 时发布此表单会出现问题。 当然,当我删除@using (html.beginform()) 时,问题就解决了。

@using (Html.BeginForm("AddTour", "AdminTour", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
  <div class="row">
  <div class="form-gro`enter code here`up">
  <form id="creation" name="creation" onchange="handleSelect()">
  <div class="col-md-6">
  @{
     List<Airlines> AirlineId = ViewBag.AirlinesId;
  }
  <select id="Airline" name="Airline" disabled>
  <option value="">- انتخاب کنید -</option>
  @foreach (Airlines c in AirlineId)
  {
      <option value="@c.Id">@c.Name</option>
  }
  </select>
  </div>
  <div class="col-md-6 ">
  <select id="TravelType" name="TravelType">
  <option value="">- انتخاب کنید -</option>
  <option value="A">1</option>
  <option value="B">2</option>
  <option value="C">3</option>
  </select>
  </div>
  </form>
  <script>
  function handleSelect() {
      if (document.getElementById('TravelType').value == 'A') {
           document.getElementById('Airline').disabled = false;
      } else {
           document.getElementById('Airline').disabled = true;
      }
   }
   </script>
   </div>
   </div>
}

在我看来,问题出在&lt;form&gt;

如何更改onchange ="handleSelect()"&lt;select&gt; 以更改过滤器?

【问题讨论】:

  • Of course, when I delete @using (html.beginform()) it fixes the problem. 你应该避免这样没有解释的陈述

标签: javascript html razor asp.net-mvc-5


【解决方案1】:

您可以在 &lt;form&gt; 元素中使用 Javascript 而不会出现问题(假设 Javascript 已启用),使用 Html.BeginForm() 生成的元素也是如此。

如果您期望一个禁用 Javascript 的环境,那么您可以考虑在过滤元素更改时显式执行发布并显示更新版本(即禁用您的元素)以反映这些更改。

您也可以考虑根本不禁用元素,而只处理服务器端的验证(即确保用户在提交表单时选择了正确/有效的组合,如果没有,则显示验证错误)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    相关资源
    最近更新 更多