我正在尝试使用jquery从动态填充的选择列表中获取数据。当列表中有很多选项时,jquery change()函数效果很好,但是只有一个选项时,它不会触发。我的代码在下面
<?php
$res=$db->SelectData("amgusers");
if (mysqli_num_rows($res) > 0) {
while($row = mysqli_fetch_array($res))
{
echo'<option value="'.$row['u_id'].'">'.$row['u_username'].'</option>';
}
}
?>
<script>
$("#uname").change(function()
{
alert($("#uname option:selected").text());
});
</script>
答案 0 :(得分:1)
如果下拉列表中只有一项,它将无法正常工作。
您可以改为尝试onClick()
。
否则,在选择框的顶部选择--select--
作为选项。因此,请在您的JavaScript中忽略它。
答案 1 :(得分:0)
您有一些选择。添加更多事件或设置默认事件并触发它。或结合起来。您还可以将默认设置设置为标记中的第一个(选中),或者如果设置为默认,则仅强制使用。
两个事件(如果您只有一个事件,或者不更改它,似乎就不太好了
$("#uname").on('change click', function() {
if ($(this).find('option').length === 1 && !$(this).find('option:selected').length) {
$(this).find('option').prop("selected", true);
}
alert($(this).find("option:selected").text() + " : " + $(this).val());
}).trigger('change');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="uname">
<option value="me">My Option</option>
</select>
也许更好,我发现多个事件可能不太好,因为您只希望对更改进行更改,所以我选择这样做。 (“点击”似乎在这里不合适)
$("#uname").on('change', function() {
if ($(this).find('option').length === 1 && !$(this).find('option:selected').length) {
$(this).find('option').prop("selected", true);
}
alert($(this).find("option:selected").text() + " : " + $(this).val());
}).trigger('change');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="uname">
<option value="me">My Option</option>
</select>
请注意,当您拥有“空”的第一个选项值时,第二组代码也可以使用,但是您可能还需要使第一个选项不可选择,否则在选择该条件时会处理该条件。