检索DropDown的值(不显示项)

时间:2010-01-02 07:36:58

标签: php javascript html ajax

我使用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]作为显示项目。我想在用户选择任何行[1]显示项时选择行[0]值。

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

2 个答案:

答案 0 :(得分: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...

答案 1 :(得分:2)

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

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

如果你正在使用jQuery,那就更容易了:

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

因为看起来你正在使用你的ajax请求替换整个下拉列表,所以只需在那里抛出一些javascript就可以在完成填充时触发更改事件,你应该好好去。