为啥我的第二个下拉菜单是复制我的第一个下拉菜单的更改操作

Posted

技术标签:

【中文标题】为啥我的第二个下拉菜单是复制我的第一个下拉菜单的更改操作【英文标题】:why does my second dropdown is copying the change action of my first dropdown为什么我的第二个下拉菜单是复制我的第一个下拉菜单的更改操作 【发布时间】:2018-12-12 11:51:26 【问题描述】:

我有这 2 个下拉菜单,它们在 onchange 中具有相同的功能,如果我选择快速付款,它应该能够显示一种快速付款模式,但问题是第二个下拉菜单只是复制第一个下拉菜单的操作

<div class="sample" data-key="1001">
    <form class="form" id="form-1001">
    <select class="form-control">                                                                                                                                
        <option value="1">1</option>
        <option value="2">2</option>                                                                                                                                            
        <option value="express">Make Express Payment</option>
    </select>
    </form>
</div>
<div class="sample" data-key="1002">
    <form class="form" id="form-1002">
    <select class="form-control">                                                                                                                                
        <option value="1">1</option>
        <option value="2">2</option>                                                                                                                                            
        <option value="express">Make Express Payment</option>
    </select>
    </form>
</div>

例如

第一个drpdwn = 1 第二个 drpdwn = 制作快速按钮

场景将是第二个下拉菜单不会显示模式,但如果

第一个 drpdwn = 制作快速按钮(将显示模式) 第二个drpdwn = 1

结果将是第二个下拉菜单也将显示应该不显示的模式。

这里的 jquery 代码 $(this).data('key') 是 1002 或 1003 。

$( ".sample" ).each(function() 
    alert($(this).data('key'));
    $( "#form-"+$(this).data('key')).change(function() 
        if ($("option:selected"). val() === "express") 
            $('#express-payment-modal').modal('show');
        
      );
);

【问题讨论】:

您忽略了将处理函数中选定选项的选择限制为任何特定元素,所以…… 【参考方案1】:

您在 change 函数中使用了通用 jQuery 选择器 - $("option:selected") 这将在数组中为您提供两个元素。当有 val() 调用时,它会为您提供数组中第一个元素的值。试试这个 -

`$( "#form-"+$(this).data('key')).change(function(e) 
    if (e.target.value === "express") 
     //...
    
 );

【讨论】:

以上是关于为啥我的第二个下拉菜单是复制我的第一个下拉菜单的更改操作的主要内容,如果未能解决你的问题,请参考以下文章

第一个下拉菜单更改第二个下拉菜单相关项目显示

下拉菜单无法正常工作

基于 Ionic 3 中的第一个 DropDownSelect 显示/隐藏第二个 DropDownSelect

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

如何以编程方式打开 Bootstrap 下拉菜单

使用javascript为下拉列表赋值