onchange = "Form.submit() 仅适用于我的下拉菜单中的第一个子下拉菜单

Posted

技术标签:

【中文标题】onchange = "Form.submit() 仅适用于我的下拉菜单中的第一个子下拉菜单【英文标题】:onchange = "myForm.submit() only working for the first subdropdown in my dropdown menu 【发布时间】:2019-06-17 17:17:19 【问题描述】:

我有一个包含 5 个团队名称的下拉列表,然后是一个包含每个团队中人员姓名的子下拉列表。 我正在尝试使表单正常工作,以便当您单击某人的姓名时,您可以看到他们的统计信息。

下拉列表中的第一个团队完美运行。其他四个没有。无论哪个团队目前占据榜首位置,这种情况都会持续存在。 如果我从非工作团队中选择一个团队成员,页面仍然会刷新,但数据不会改变。

使用 chrome 开发人员工具,我可以看到,如果我从***团队中选择一个团队成员,则 html 中的选项将变为已选择的选项。如果我从任何其他团队中选择一个团队成员,则不会发生这种情况。 但是,如果我在非工作团队上添加另一个功能,显示所选人员的姓名,然后从非工作团队中选择一个团队成员,那就行了!

当不同的divs 具有相同的 ID 时,我也看到过类似的问题。这些divs 没有相同的 ID,但它们都具有相同的名称(由我将用户 ID 传递到的类自动生成) 大家觉得呢?

我的前两个团队的 HTML:

<form id="myForm" method="post">
    <div class="dropdown">
        <div class="yourteam">
            <h3>Teams</h3>
        </div>

        <div class="dropdown-content">
            <div class="dropdown-submenu">
                <a class="test" tabindex="-1" href="#">Team1 <span class="caret"></span></a>
                <div id='Team1' class="dropdown-menu">
                    @Html.DropDownListFor(n => n.User, new SelectList(Model.1Members, "Value", "Key"), "Team Members", new  @class = "namedrop", @id = "Name1", onchange = "myForm.submit()" )
                </div>
            </div>

            <div class="dropdown-submenu">
                <a class="test" tabindex="-1" href="#">Team2 <span class="caret"></span></a>
                <div id='Team2' class="dropdown-menu">
                    @Html.DropDownListFor(n => n.User, new SelectList(Model.2Members, "Value", "Key"), "Team Members", new  @class = "namedrop", @id = "Name2", @onchange = "myForm.submit()" )
                </div>
            </div>
            <!-- The rest of the teams -->
        </div>
    </div>
</form>

【问题讨论】:

由于表单有多个具有相同名称的元素,它很可能在服务器端被解释为一个值数组。检查服务器是否正确处理发布的数据 只是更改不同元素的名称会更容易吗?还是因为我使用了 HTML.DropdownListFor 而这不起作用? 您正在使用 DDLF 绑定到同一个属性,为什么不将它们组合成一个 SelectList 并使用多个选择?我认为你不能在同一个表单上拥有 2 个同名的 DDLF。 它的语法是什么样的?抱歉,我对此很陌生。 如果您想要多个选择,请尝试使用 ListBoxFor (LBF) 而不是 DropDownListFor (DDLF)。但是,如果你想从多个下拉列表中绑定,你应该使用for 循环并绑定到列表/值数组。 【参考方案1】:
 onchange = "myForm.submit()"

你在 onchange 之前错过了@

【讨论】:

以上是关于onchange = "Form.submit() 仅适用于我的下拉菜单中的第一个子下拉菜单的主要内容,如果未能解决你的问题,请参考以下文章

select中onchange的用法

访问 vba:为啥 form_delete sub 运行两次

HTML 动态创建select,然后添加onChange,如何添加onChange函数成功啊?

hidden类型的input控件onchange事件为何不起作用?

Javascript:“onchange”事件不适用于“文本输入”对象中的“值”更改

onChange="document.location.href=this.value