【问题标题】:Issue with Select List Options in ASP.NET MVC Web Applications with JQuery带有 JQuery 的 ASP.NET MVC Web 应用程序中的选择列表选项问题
【发布时间】:2019-10-05 16:54:15
【问题描述】:

我正在开发的一个网站 http://www.michaelgworkman.com 是我创建的,目的是帮助我找到工作,同时也有助于我的职业生涯。

In 一直在尝试为该网站上的联系表单添加轻量级的 JQuery 表单验证,该网站托管在 Microsoft Azure 云平台上,但遇到了问题。在表单中引用 INTEREST 的下拉列表总是在未选择选项时返回 FALSE 表单,当我在下拉列表中选择项目时也返回 FALSE。表单如下所示:

我在表单的 Razor 视图 .cshtml 文件中有这个:

这是从表单生成的 HTML:

当我提交表单时未在 INTEREST 下拉菜单中选择兴趣时,它会从文件中的 JQuery 正确返回 false。

当我选择兴趣后提交表单时,JQuery 仍然在下拉列表中显示未选择选项,这是选择值后表单的外观:

这是 JQuery 代码,即使在 INTEREST 下拉列表中选择了一个值,它也总是返回 false。

我想知道如何解决这个问题,到目前为止它已经困扰了我大约一个小时。

【问题讨论】:

    标签: c# jquery asp.net razor


    【解决方案1】:

    好的,我在这里找到了问题,我为表单中的下拉列表使用了错误的 ID,我试图使用 $("#ContractCategory"),但这不是正确的 ID,Razor 代码是根据此 ASP.NET MVC Web 应用程序中实体框架使用的数据库表的名称,自动将 ID 创建为 id="ContractCategories_ID"。简单的修复,我为此工作了大约一个小时有点惊讶,现在表单可以正常工作了。

    【讨论】:

      【解决方案2】:

      一方面,您向我们展示的标记中没有带有id="ContactCategory" 的元素,因此如果该选择器没有找到任何内容,那么false 可能确实是正确的结果。试试:

      alert($('#ContactCategories_ID option').is(':selected'));
      

      但即便如此,由于该选择器会找到 多个 元素,那么您正在执行的操作的语义可能仍然没有多大意义,并且可能会返回意外结果。无需查找选定的选项,只需检查表单元素本身的值。通常要获得您可能会执行以下操作的值:

      let category = $('#ContactCategories_ID').val();
      

      并检查该值:

      alert(category === '');
      

      【讨论】:

      • 是的,这正是这个问题的错误根源,表单元素的ID不正确,我发帖后才意识到,但感谢您为我指出,a简单的修复。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-26
      • 2011-01-07
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多