gpt4 book ai didi

javascript - 使用 'closest' : jQuery 选择时,Select2 .val 函数返回空值

转载 作者:可可西里 更新时间:2023-11-01 13:49:15 25 4
gpt4 key购买 nike

我有一个表格,其中包含一个复选框、一些文本和一个 select2 下拉列表。用户将选择一个复选框,然后在 select2 下拉列表中选择一个值。我试图查明用户是否在与选中的复选框对应的 select2 框中选择了一个值。

以下是我的代码:

var value = [{
id: 0,
text: 'enhancement'
}, {
id: 1,
text: 'bug'
}, {
id: 2,
text: 'duplicate'
}, {
id: 3,
text: 'invalid'
}, {
id: 4,
text: 'wontfix'
}]

$(document).ready(function() {
$(".bulk_relationship_dropdown").select2({
data: value
})

$("#submit").click(function() {

jQuery(".bulk_relationship_dropdown").each(function() {
if (jQuery(this).val() != "") {
console.log(jQuery(this).val());
}
})

$(".cb:checked").each(function() {
var cb = $(this);
if (cb.closest('tr').find('.bulk_relationship_dropdown').val() == "") {
console.log("here"); //do something
}
})

});


});
.select2-container {
margin-top: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/3.5.2/select2.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/3.5.2/select2.min.css" rel="stylesheet" />

<br>
<table>
<tr>
<td>
<input type="checkbox" class="cb">
</td>
<td>some random text</td>
<td>
<input type="text" style="width: 120px" class="bulk_relationship_dropdown">
</td>
</tr>
<tr>
<td>
<input type="checkbox" class="cb">
</td>
<td>some random text</td>
<td>
<input type="text" style="width: 120px" class="bulk_relationship_dropdown">
</td>
</tr>
<tr>
<td>
<input type="checkbox" class="cb">
</td>
<td>some random text</td>
<td>
<input type="text" style="width: 120px" class="bulk_relationship_dropdown">
</td>
</tr>
<tr>
<td>
<input type="checkbox" class="cb">
</td>
<td>some random text</td>
<td>
<input type="text" style="width: 120px" class="bulk_relationship_dropdown">
</td>
</tr>
<tr>
<td>
<input type="checkbox" class="cb">
</td>
<td>some random text</td>
<td>
<input type="text" style="width: 120px" class="bulk_relationship_dropdown">
</td>
</tr>
</table>

<button id="submit">submit</button>

在上面的代码中,当我遍历所有复选框时,.val() 函数为我提供了正确的值。就是这部分。

jQuery(".bulk_relationship_dropdown").each(function() {
if (jQuery(this).val() != "") {
console.log(jQuery(this).val());
}

})

但是当我找到对应于选中复选框的 select2 框时,.val() 函数总是返回空字符串。

$(".cb:checked").each(function() {
var cb = $(this);
if (cb.closest('tr').find('.bulk_relationship_dropdown').val() == "") {
console.log("here"); //do something
}
})

我做错了什么?

我使用的是 select2 3.5.2

最佳答案

select2 将您的 input 类复制为它生成的非表单控制结构的一部分。生成的结构(当前为 span)将是 find 返回的 jQuery 集中的第一个结构,而 val 仅尝试从集合中的第一个元素,因此将返回 undefined。只需将 input 添加到您的选择器,这样您就可以找到您的输入(select2 隐藏但保持最新):

cb.closest("tr").find("input.bulk_relationship_dropdown")
// --------------------^^^^^

更新的片段:

var value = [{
id: 0,
text: 'enhancement'
}, {
id: 1,
text: 'bug'
}, {
id: 2,
text: 'duplicate'
}, {
id: 3,
text: 'invalid'
}, {
id: 4,
text: 'wontfix'
}]

$(document).ready(function() {
$(".bulk_relationship_dropdown").select2({
data: value
})

$("#submit").click(function() {

jQuery("input.bulk_relationship_dropdown").each(function() {
if (jQuery(this).val() != "") {
console.log(jQuery(this).val());
}
})

$(".cb:checked").each(function() {
var cb = $(this);
if (cb.closest('tr').find('input.bulk_relationship_dropdown').val() == "") {
console.log("here"); //do something
}
})

});


});
.select2-container {
margin-top: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/3.5.2/select2.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/3.5.2/select2.min.css" rel="stylesheet" />

<br>
<table>
<tr>
<td>
<input type="checkbox" class="cb">
</td>
<td>some random text</td>
<td>
<input type="text" style="width: 120px" class="bulk_relationship_dropdown">
</td>
</tr>
<tr>
<td>
<input type="checkbox" class="cb">
</td>
<td>some random text</td>
<td>
<input type="text" style="width: 120px" class="bulk_relationship_dropdown">
</td>
</tr>
<tr>
<td>
<input type="checkbox" class="cb">
</td>
<td>some random text</td>
<td>
<input type="text" style="width: 120px" class="bulk_relationship_dropdown">
</td>
</tr>
<tr>
<td>
<input type="checkbox" class="cb">
</td>
<td>some random text</td>
<td>
<input type="text" style="width: 120px" class="bulk_relationship_dropdown">
</td>
</tr>
<tr>
<td>
<input type="checkbox" class="cb">
</td>
<td>some random text</td>
<td>
<input type="text" style="width: 120px" class="bulk_relationship_dropdown">
</td>
</tr>
</table>

<button id="submit">submit</button>

关于javascript - 使用 'closest' : jQuery 选择时,Select2 .val 函数返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37047696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com