javascript - PHP页面: Dropdown always selects the first value

标签 javascript php mysql

我的 PHP 页面上有多个下拉列表,所有下拉列表都是这样创建的:

<?php
//Select values from MySQL Database
$query = "SELECT name FROM Player";
$result = mysql_query($query);

//Show DropDownList
echo '<select name="players" onclick="sortlist(this)">';
while($row = mysql_fetch_assoc( $result ))
{ 
        echo '<option value="'.$row['name'].'">' . $row['name'] . '</option>';   
}
echo '</select>';
?>

现在,如果您没有注意到,我会在每个下拉列表上调用一个 javascript 函数“sortlist(this)”。该函数只是按字母顺序对值进行排序。您可以检查脚本:

<script>

function sortlist(selElem) {
        var tmpAry = new Array();
        for (var i=0;i<selElem.options.length;i++) {
            tmpAry[i] = new Array();
            tmpAry[i][0] = selElem.options[i].text;
            tmpAry[i][1] = selElem.options[i].value;
        }
        tmpAry.sort();
        while (selElem.options.length > 0) {
            selElem.options[0] = null;
        }
        for (var i=0;i<tmpAry.length;i++) {
            var op = new Option(tmpAry[i][0], tmpAry[i][1]);
            selElem.options[i] = op;
        }
        return;
    }
</script>

我的所有下拉列表都位于这样的表单标记内:

<form accept-charset="utf-8" action="" method="post">

脚本运行正常,我有按字母顺序排列的下拉列表,但每当我选择一个值时,它总是显示第一个值。

最佳答案

尝试这样的事情

<body>
    <select id="select_id" >
        <option value="B">B</option>
        <option value="Z">Z</option>
        <option value="C">C</option>
        <option value="E">E</option>
        <option value="A">A</option>
    </select>
</body> 
<script type="text/javascript">
    function sortlist(selElem) {
        var tmpAry = new Array();
        for (var i=0;i<selElem.options.length;i++) {
            tmpAry[i] = new Array();
            tmpAry[i][0] = selElem.options[i].text;
            tmpAry[i][1] = selElem.options[i].value;
        }
        tmpAry.sort();
        while (selElem.options.length > 0) {
            selElem.options[0] = null;
        }
        for (var i=0;i<tmpAry.length;i++) {
            var op = new Option(tmpAry[i][0], tmpAry[i][1]);
            selElem.options[i] = op;
        }
    return;
    }
    sortlist(document.getElementById('select_id'));
</script>

原因:您的脚本始终对 onclick 上的选择进行排序,无论您是否选择值,它都会对您选择的值进行排序和重置。

因此,在渲染选择元素后,仅调用一次脚本进行排序

关于javascript - PHP页面: Dropdown always selects the first value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20779480/

相关文章:

javascript - 如何在javascript中从字符串创建对象树

javascript - 如何在 JavaScript 中安全地嵌套访问 token ?

javascript - 微信分享,如何更改转发描述和缩略图?

php - 在不应该插入的情况下插入多个行

mysql仅授予对一个表及其某些列的选择权限

javascript - 将按钮作为 Material-ui 表中的 TableRowColumn

php - 即使随机值添加到 php 请求,IE 也会缓存 JSON 结果

php - 有没有办法检索类常量的 PHPDoc 注释?

mysql - 满足条件时对行进行分组

java - 比较 Hibernate 中日期时间字段的时间部分