动态下拉

时间:2013-06-04 22:51:35

标签: php javascript html jquery

我有3个下拉框,这取决于彼此的选择。第一次下拉工作正在进行,但第二次和第三次下降不会填充任何内容。这是形式:

<fieldset>
    <legend style="color: blue">Tour Details</legend>
    <li id="li_11" >
    <div><label for="element_11">Tour Type </label>
    <select id="element_11" name="element_11"> 
    <option value="">--Select--</option>

        <?php if (!empty($list)) { ?>
            <?php foreach($list as $row) { ?>
                <option value="<?php echo $row['id']; ?>">
                    <?php echo $row['name']; ?>
                </option>
            <?php } ?>
        <?php } ?>
    </select>
    <label style="color: red; font-style: italic;"></label>
    </div> 
    </li>

    <li id="li_12" >
    <div><label for="element_12">Country</label>
    <select id="element_12" name="element_12" class="update" disabled="disabled">
        <option value="">----</option>
    </select>
    </div> 
    </li>   

    <li id="li_13" >
    <div><label for="element_13">Destination</label>
    <select id="element_13" name="element_13" class="update" disabled="disabled"> 
        <option value="">----</option>
    </select>
    </div> 
    </li>

这是表格顶部的PDO代码

<?php

try {

$objDb = new PDO('mysql:host=localhost;dbname=jurassicbase5', 'root', '');
$objDb->exec('SET CHARACTER SET utf8');

$sql = "SELECT * FROM `destination` WHERE `master` = 0";
$statement = $objDb->query($sql);
$list = $statement->fetchAll(PDO::FETCH_ASSOC);

} catch(PDOException $e) {
echo 'There was a problem';
}

?>

这是处理onchange事件的update.php文件

<?php
if (!empty($_GET['id']) && !empty($_GET['value'])) {

$id = $_GET['id'];
$value = $_GET['value'];

try {

    $objDb = new PDO('mysql:host=localhost;dbname=jurassicbase5', 'root', '');
    $objDb->exec('SET CHARACTER SET utf8');

    $sql = "SELECT * FROM `destination` WHERE `master` = ?";
    $statement = $objDb->prepare($sql);
    $statement->execute(array($value));
    $list = $statement->fetchAll(PDO::FETCH_ASSOC);

    if (!empty($list)) {

        $out = array('<option value="">Select one</option>');

        foreach($list as $row) {
            $out[] = '<option value="'.$row['id'].'">'.$row['name'].'</option>';
        }

        echo json_encode(array('error' => false, 'list' => implode('', $out)));

    } else {
        echo json_encode(array('error' => true));
    }

} catch(PDOException $e) {
    echo json_encode(array('error' => true));
}

} else {
echo json_encode(array('error' => true));
}

任何人都可以看到问题所在吗?请帮助我,因为我已经在这几个小时。如果您需要查看此表单的数据库表,我可以向您显示。

这是处理onchange事件的javascript代码

var formObject = {
run : function(obj) {
    if (obj.val() === '') {
        obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
    } else {
        var id = obj.attr('id');
        var v = obj.val();
        jQuery.getJSON('mod/update.php', { id : id, value : v }, function(data) {
            if (!data.error) {
                obj.next('.update').html(data.list).removeAttr('disabled');
            } else {
                obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
            }
        });
    }
}
};

$(function() {

$('.update').live('change', function() {
    formObject.run($(this));
});

});

0 个答案:

没有答案
相关问题