0

我正在使用 ASP.Net MVC3 Razor,我在 .cshtml 中有两个下拉列表,比如说 ddl1 和 ddl2。我在控制器中绑定了数据并使用 viewbag 发送到下拉列表。两个 ddls 都有相同的数据,如 A、B、C、D。如果我在ddl1中选择A,它应该在ddl2中隐藏A;如果选择 B 它应该在 ddl2 中隐藏 B。任何人都可以帮助我使用javascript或jquery。

这是我绑定的控制器..

 public ActionResult Index()
        {
            ViewBag.ddl1 = new SelectList(db.Collection, "ID", "Name");
            ViewBag.ddl2 = new SelectList(db.Collection, "ID", "Name");
            return View();
        }

并且视图是(上述操作的.cshtml)

<table class="table">
    <tr>
        <td>      
       @Html.DropDownList("ddl1", "-select name-")
        </td>
        <td>
        @Html.DropDownList("ddl2","-select name-")
          </td>
    </tr>
    </table>

提前感谢

4

1 回答 1

1

这是主要思想。假设我们有 2 个下拉列表:

<select id="ddl1">
    <option>Select</option>
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
    <option value="D">D</option>
</select><br/><br/>
<select id="ddl2">
    <option>Select</option>
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
<option value="D">D</option>
</select>​

从 ddl2 中删除 ddl1 选定的值:

$('#ddl1').change(function() {
    $('#ddl2 option').each(function() {
        if ($(this).attr('value') == $('#ddl1 option:selected').attr('value')) {
            $(this).remove();
        }
    });
});

还要从 ddl1 中删除 ddl2 选定的值:

$('#ddl2').change(function() {
    $('#ddl1 option').each(function() {
        if ($(this).attr('value') == $('#ddl2 option:selected').attr('value')) {
            $(this).remove();
        }
    });
});

如果您想在每次更改时重新加载下拉值,只需再次调用您的下拉填充函数。我希望这个能帮上忙...

这里还有演示:http: //jsfiddle.net/cJ8wN/8/

于 2012-10-12T14:20:19.150 回答