我有一个php生成的选择选项菜单在我的页面上的选项'未经验证','已验证'和'禁止'。
我正在尝试(自动)更改statusField的背景色,这取决于(从数据库)预先选择的选项。
相应的状态选项和背景颜色应如下所示:
未验证-橙子已验证-绿色禁止-红色
出于测试目的,我能够通过使用“选择选项菜单示例#1”(如下)沿着下面的“更改背景颜色”脚本(手动)实现背景颜色更改。
然而...我不会在我的网站上使用示例#1字段。
我将使用php版本,'Example #2',这样我就可以用存储在数据库中的特定状态填充statusField的预选选项。
不幸的是......当我尝试使用与示例#2相同的“更改背景颜色”脚本时,颜色不会自动更改。
选择选项菜单示例#1
<select id="status" name="status" class="statusField" value="<?php echo $_POST['status']; ?>">
<option value="Unverified" class="unverified">Unverified</option>
<option value="Verified" class="verified">Verified</option>
<option value="Banned" class="banned">Banned</option>
</select>
选择选项菜单示例#2
<?php
$selected = "$status";
$options = array('Unverified', 'Verified', 'Banned');
echo "<select id='status' name='status' class='statusField'>";
foreach($options as $option){
if($selected == $option) {
echo "<option selected='selected' value='$option'>$option</option>";
}
else {
echo "<option value='$option'>$option</option>";
}
}
echo "</select>";
?>
更改背景色-脚本
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(document).on("change", ".statusField", function(){
var colors = ["orange", "green", "red"];
var wth = $(this).find(":selected").index();
var color = colors[ wth ];
$(".statusField").css("background-color", color );
});
});
</script>
1条答案
按热度按时间qeeaahzv1#
标题提到了改变div的背景色,但在你的问题中,你说你想改变statusField的背景色,你的例子中对statusField的唯一引用是
<select>
元素,所以我假设你想改变它的背景色。我不是一个JQueryMaven,所以您可能想用JQuery语言来修改我的一些普通javascript。
添加一些css。
将你的$options数组转换成javascript变量
这将产生:
然后立即在select元素上设置合适的css类,这一步在php中也可以很容易地完成。
然后向select元素添加一个"change"事件侦听器。
在事件监听器回调中,找到你需要修改的css类。你的select元素带有一个"statusField" css类。我们不想触及它,我们只想找到
option_classes
中包含的任何类。然后用从新选择的选项的值派生的类名替换
class_to_change
。你可能想在页面的最顶端定义php $options变量,至少在你开始做javascript的东西之前,它需要被定义。
那么
<script>
标记的内容将如下所示:下面是一个工作示例:
一个9个1x一个10个1x一个11个1x