将事件绑定到具有相同名称的多个输入

时间:2013-07-23 16:13:51

标签: jquery asp.net-mvc asp.net-mvc-3 jquery-ui

在我的ASP MVC页面中,根据用户单选按钮组选择,我们有四个或五个不同的菜单可用。其中一些字段共享一个文本输入框,我需要绑定一个偶数。但是,该事件仅在列表的第一个菜单中工作。是否可以将同一事件绑定到共享相同名称的多个输入?

的jQuery

    $('#LastName').change(function () {
        if ($('#LastName').val() == '') {
            $('#BankName').html("");
        } else {
            $.ajax({
                type: 'GET',
                url: '@Url.Action("GetBankName", "Agent")',
                data: { routing: $('#RoutingNumber').val() },
                success: function (data) {
                    $('#BankName').val(data);
                    $('#BankName').text(data);
                }
            });
        }
    });

ASP MVC

此HTML在加载时会显示在页面上,但一次只能显示一个fieldset

            <fieldset id="Enroll" style="width:380px; display: none;">
            .
            .
                <div class="M-editor-label">
                    @Html.LabelFor(model => model.LastName)<span class="req">*</span>
                </div>
                <div class="M-editor-field">
                    @Html.TextBoxFor(model => model.LastName)
                </div> 
            <fieldset id="ModT" style="width:380px; display: none;">
            .
            .           
                <div class="M-editor-label">
                    @Html.LabelFor(model => model.LastName)<span class="req">*</span>
                </div>
                <div class="M-editor-field">
                    @Html.TextBoxFor(model => model.LastName)
                </div> 
            <fieldset id="ModA" style="width:380px; display: none;">
            .
            .
                <div class="M-editor-label">
                    @Html.LabelFor(model => model.LastName)<span class="req">*</span>
                </div>
                <div class="M-editor-field">
                    @Html.TextBoxFor(model => model.LastName)
                </div>

2 个答案:

答案 0 :(得分:1)

只需更改jQuery选择器吗?

$('input[name=your-input-name]')

而不是:

$('#LastName')

以及粘合剂,以涵盖未来的输入:

$('input[name=your-input-name]').on("change", function () { });

答案 1 :(得分:1)

你正在使用id,但id应该是唯一的。

这就是为什么它不起作用,因为在执行$('#LastName')时,jquery执行document.getElementById并且只返回1个元素。

改用class。如果你绝对想要多个(为什么是无效的html),你可以但不建议使用$('[id=LastName]')