选择不同的选择选项时,更改另一个SELECT标记的值

时间:2011-08-10 14:28:51

标签: php javascript jquery select tags

我有一个选择标记,用户可以在其中选择他们想要点击的曝光类型:

 <select name="exposure">
                        <?php while($a = mysql_fetch_assoc($r)):  ?>
                            <option value=""><?php echo $a['exposure']; ?></value>
                        <?php endwhile; ?>
                        </select>

在此之下,我有另一个选择标记,它会显示从他们选择的任何曝光类型中获取值的点击次数:

<select name="clicks">
                        <?php while($a = mysql_fetch_assoc($r)):  ?>
                            <option value=""><?php echo $a['amount']; ?></value>
                        <?php endwhile; ?>
                        </select>

我的问题是:如何根据用户在第一个中选择的内容更改第二个选择标记中的值?

1 个答案:

答案 0 :(得分:0)

这应该不会太难。您真正需要的是“曝光”值和“点击”值之间的映射,以及将“点击”值转换为有效标记的某种方式。您可以在jsFiddle上使用以下示例:http://jsfiddle.net/ninjascript/5QPq5/

/**
 * Here's a map of possible values from 'exposure' and
 * related values for 'clicks'.
 */
var map = {
    "OptionA": ['A001','A002','A003'],
    "OptionB": ['B001','B002','B003']  
};

/** 
 * A quick and dirty method to turn some values in the map
 * into a set of <option> tags.
 */
function create(key)
{
    var result = [];
    if (map.hasOwnProperty(key)) {
        for (var i = 0; i < map[key].length; i++) {
            result.push('<option value="'+map[key][i]+'">');
            result.push(map[key][i]);
            result.push('</option>');
        }
    }
    return result.join('');
}

/**
 * Use jQuery to handle every 'change' event and add a new
 * set of <option> elements to the 'clicks' element.
 */
$('select[name="exposure"]').live('change', function()
{   
    var options = create(this.value);
    $('select[name="clicks"]').html(options);
    $('div').html('<span>foo</span>'); // <-- Update some other element too
});

编辑:jQuery.live()将在事件发生时执行函数。您可以在该函数中执行任何操作,包括更改多个DOM元素的内容。