为什么我的第二个下拉菜单是复制我的第一个下拉菜单的更改操作
why does my second dropdown is copying the change action of my first dropdown
我有这 2 个下拉菜单,它们在 onchange 中具有相同的功能,如果我 Select 进行快速付款,它应该能够显示快速付款模式,但问题是第二个下拉菜单只是复制第一个下拉菜单的动作
<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');
}
});
});
您在更改函数中使用了通用 jQuery 选择器 - $("option:selected")
这将为您提供数组中的两个元素。当有 val() 调用时,它会为您提供数组中第一个元素的值。试试这个 -
`$( "#form-"+$(this).data('key')).change(function(e) {
if (e.target.value === "express") {
//...
}
});
我有这 2 个下拉菜单,它们在 onchange 中具有相同的功能,如果我 Select 进行快速付款,它应该能够显示快速付款模式,但问题是第二个下拉菜单只是复制第一个下拉菜单的动作
<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');
}
});
});
您在更改函数中使用了通用 jQuery 选择器 - $("option:selected")
这将为您提供数组中的两个元素。当有 val() 调用时,它会为您提供数组中第一个元素的值。试试这个 -
`$( "#form-"+$(this).data('key')).change(function(e) {
if (e.target.value === "express") {
//...
}
});