【问题标题】:Retrieving value (not display item) of DropDown检索 DropDown 的值(不显示项)
【发布时间】:2010-01-02 07:36:58
【问题描述】:

我正在使用 AJAX 动态填充 DropDown。 DropDown 代码如下所示:

<select class="element select medium" id="inDistrict" name="inDistrict" onclick="MakeRequest('divDistrict', 'inDistrict', 'SELECT * FROM districtmaster');" onchange="alert(document.getElementByID('inDistrict').value);"> 
    <option value="Select" selected="Select">Select</option>
</select>

另一个执行 AJAX 请求的文件包含以下代码:

<?php
    require("dbconnection.php");
    require("dbaccess.php");

    $dropdownControlName = $_GET['DropDownControlName'];
    $query = $_GET['SqlQuery'];
    dbconnection::OpenConnection();
    $result = dbaccess::GetRows($query);
?>
<select name="<?php echo $dropdownControlName; ?>">
<option>Select from the list</option>
<?php while($row=mysql_fetch_array($result))
{ ?>
    <option value="<?= $row[0] ?>"><?= $row[1] ?></option>
<?php } ?>
</select>

一切正常,DropDowns 也被填满,只是我没有关注如何选择 Option 的值。在上面的代码中,您可以看到我使用 row[0] 作为值,使用 row[1] 作为显示项。每当用户选择任何 row[1] 显示项时,我都想选择 row[0] 值。

在上面的第一个代码中,您可以看到我添加了一个 onchange 事件,并且只有一个警告框。但它没有执行。如何选择 row[0] 值以及为什么 onchange 事件没有触发?

【问题讨论】:

    标签: php javascript html ajax


    【解决方案1】:

    onchange 不会响应选定值的 DOM 操作而触发。您可以使用一些简单的 javascript 手动触发它:

    var inDistrict = document.getElementById('inDistrict');
    if (inDistrict.onchange)
      inDistrict.onchange();
    

    如果你使用 jQuery,那就更简单了:

    $('#inDistrict').change();
    

    由于看起来您正在用您的 ajax 请求替换整个下拉列表,因此只需将其中的一些 javascript 放入其中以在完成填充时触发更改事件,您应该一切顺利。

    【讨论】:

    • 以及如何选择row[0]即显示项的值?
    • 这只是所选选项的“值”属性。 mydropdown.options[mydropdown.selectedIndex].value
    【解决方案2】:

    onchage 事件行中的错误案例用法:

    document.getElementByID
    

    正确:

    document.getElementById  
    

    注意,而不是在上面使用;您也可以像这样提醒下拉值:

    onchange="alert(this.value);"
    

    然后是下拉菜单:

    如果将 [ ] 添加到元素的名称中,它们将变为数组,例如:

    <select name="myselect[]">
    

    现在您可以从 php 访问它的每个元素,如下所示: (假设您在表单中发布方法)

    echo $_POST['myselect'][0]; // this prints first item value
    echo $_POST['myselect'][1]; // this prints second item value
    echo $_POST['myselect'][2]; // this prints third item value
    //and so on...
    

    【讨论】:

    • 实际上我在原始文件中正确写入,而在编辑帖子时它可能已更改。请忽略。
    • 动态填充DropDown时,命名为数组,如何获取数组的大小?
    • 我刚刚给出了一个例子,你可以在那里使用 ajax,也可以通过在 ajax 响应中发回它来发回它的大小。如何计数($_POST['myselect'])
    猜你喜欢
    • 1970-01-01
    • 2018-08-28
    • 2016-11-01
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多