当选择列表中只有一个选项时,JQuery change()函数不起作用

当选择列表中只有一个选项时,JQuery change()函数不起作用,jquery,Jquery,我试图使用jquery从动态填充的选择列表中获取数据。当列表中有许多选项时,Jquery更改函数工作良好,但当只有一个选项时,它不会启动。我的代码在下面 <?php $res=$db->SelectData("amgusers"); if (mysqli_num_rows($res) > 0) { while($row = mysqli_fetch_array($res)) { echo'<

我试图使用jquery从动态填充的选择列表中获取数据。当列表中有许多选项时,Jquery更改函数工作良好,但当只有一个选项时,它不会启动。我的代码在下面

<?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>

如果下拉列表中只有一项,则它将不起作用

你可以试试onClick


否则,在选择框顶部将选项设置为-select-。在JavaScript中相应地忽略这一点。

如果下拉列表中只有一项,它将无法工作

你可以试试onClick


否则,在选择框顶部将选项设置为-select-。在JavaScript中相应地忽略这一点。

您有几个选项。添加更多事件或设置默认值并触发它。或者结合起来。您还可以将默认值设置为“选定标记”中的第一个,或者仅在其中一个标记为“强制”时才将其设置为第一个标记

如果你只有一件事,或者不改变它,那么两件事似乎并不伟大

$uname.在“更改单击”功能上{ 如果$this.find'option'.length==1&&!$this.find'option:selected.length{ $this.find'option'.propselected,true; } 警报$this.findoption:selected.text+:++$this.val; }.触发“改变”; 我的选择
你有几个选择。添加更多事件或设置默认值并触发它。或者结合起来。您还可以将默认值设置为“选定标记”中的第一个,或者仅在其中一个标记为“强制”时才将其设置为第一个标记

如果你只有一件事,或者不改变它,那么两件事似乎并不伟大

$uname.在“更改单击”功能上{ 如果$this.find'option'.length==1&&!$this.find'option:selected.length{ $this.find'option'.propselected,true; } 警报$this.findoption:selected.text+:++$this.val; }.触发“改变”; 我的选择
请显示完整的html请如果只有一个选项,它是如何变化的,为什么您需要启动一个事件?如果您确实需要它,那么在顶部放置一个默认的请选择选项,但这可能意味着您需要验证已选择的内容-这样您将始终至少有2个选项您可能可以执行$uname.changefunction{alert$uname option:selected.text;}.trigger'change';如果要强制。可以在动态填充的选项之前添加选项选择值请显示完整的html如果只有一个选项,它将如何更改以及为什么需要触发事件?如果您确实需要它,那么在顶部放置一个默认的请选择选项,但这可能意味着您需要验证已选择的内容-这样您将始终至少有2个选项您可能可以执行$uname.changefunction{alert$uname option:selected.text;}.trigger'change';如果要强制。可以在事件将触发的动态填充选项之前添加选项选择值,该选项包含多个选项twice@aje-是的,我添加了不使用点击的选项,因为这似乎是更干净的方法。我从不喜欢点击事件,除非输入上有特定的原因,包括选择、单选按钮等。@aje-第一个触发两次的原因是有两个事件附加了点击和更改,您需要处理它们,可能是使用e.P.P或类似的方法来阻止下一个触发。如果有多个选项,事件将触发twice@aje-是的,我添加了不使用点击的选项,因为这似乎是更干净的方法。我从不喜欢点击事件,除非在输入上有特定的原因,包括选择、单选按钮等。@aje-第一个触发两次的原因是有两个附加的点击和更改事件,您需要处理它们,可能需要使用e.preventPropagation或类似的方法来防止下一个触发。