在 Javascript/JQuery 中选择单选选项时,是否可以动态更改下拉菜单的颜色或更改列表项的颜色?
Is it possible to dynamically change the color of a dropdown or change list item color when a radio option is selected in Javascript/JQuery?
我的代码允许我 select 一个单选选项,比如 'Work',并让下拉框自动 select 'Work' 作为响应。但是是否有可能更进一步 select 单选选项 'Work',并让 'Work' 下拉列表 selected 并且也变为蓝色,例如。 'Grocery' 为绿色,'Chores' 为红色,等等。甚至可能更进一步,让后续的任务列表项目也根据类别进行颜色编码?
//task entry interface is dynamically changed based on type of task entered
//dynamic list
$(document).ready(function ($) {
$(document).on('change', 'input[name="category"]', function () {
var lookup_val = $(this).val();
$("#mySelect option").filter(function () {
return $(this).val() === lookup_val;
}).first().prop('selected', true).siblings().prop('selected', false);
$("select[name='mySelect']").trigger({ type:'change', originalEvent:'custom' });
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="list-wrap" contenteditable="false">
<div class="list-inner-wrap">
<h2 class="title">ToDo List</h2>
<h3 class="title">Add Task</h2>
<!--<h4>Task Name</h4>-->
<form method="POST" action="..." name="radiodemo" id="radiodemo" onsubmit="getCategory();">
<label for="category"> Category:</label>
<input type="radio" id="grocery" name="category" value="Grocery" class="category" checked="checked">
<label for="grocery">Grocery</label>
<input type="radio" id="work" name="category" value="Work" class="category">
<label for="work">Work</label>
<input type="radio" id="chores" name="category" value="Chores" class="category">
<label for="chores">Chores</label>
<input type="radio" id="finance" name="category" value="Finance" class="category">
<label for="finance">Finance</label>
<br>
<!--dynamic radio option -->
Select your category:
<select id="mySelect">
<option value="Groceries">Groceries</option>
<option value="Work">Work</option>
<option value="Chores">Chores</option>
<option value="Finance">Finance</option>
</select>
<br><br>
</form>
<p id="demo"></p>
有可能:)
我为每个选择添加一个 if 并添加 class 并删除其他。
//task entry interface is dynamically changed based on type of task entered
//dynamic list
$(document).ready(function ($) {
$(document).on('change', 'input[name="category"]', function () {
var lookup_val = $(this).val();
$("#mySelect option").filter(function () {
return $(this).val() === lookup_val;
}).first().prop('selected', true).siblings().prop('selected', false);
$("select[name='mySelect']").trigger({ type:'change', originalEvent:'custom' });
$( "#mySelect" ).removeClass();
if(lookup_val === 'Groceries'){
$( "#mySelect" ).addClass( "red" );
}else if(lookup_val === 'Work'){
$( "#mySelect" ).addClass( "blue" );
}else if(lookup_val === 'Chores'){
$( "#mySelect" ).addClass( "green" );
}else if(lookup_val === 'Finance'){
$( "#mySelect" ).addClass( "yellow" );
}
});
});
.red{
background-color:red;
color:white;
}
.blue{
background-color:blue;
color:white;
}
.green{
background-color:green;
color:white;
}
.yellow{
background-color:yellow;
color:white;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="list-wrap" contenteditable="false">
<div class="list-inner-wrap">
<h2 class="title">ToDo List</h2>
<h3 class="title">Add Task</h2>
<!--<h4>Task Name</h4>-->
<form method="POST" action="..." name="radiodemo" id="radiodemo" onsubmit="getCategory();">
<label for="category"> Category:</label>
<input type="radio" id="grocery" name="category" value="Grocery" class="category" checked="checked">
<label for="grocery">Grocery</label>
<input type="radio" id="work" name="category" value="Work" class="category">
<label for="work">Work</label>
<input type="radio" id="chores" name="category" value="Chores" class="category">
<label for="chores">Chores</label>
<input type="radio" id="finance" name="category" value="Finance" class="category">
<label for="finance">Finance</label>
<br>
<!--dynamic radio option -->
Select your category:
<select id="mySelect" class='red'>
<option value="Groceries">Groceries</option>
<option value="Work">Work</option>
<option value="Chores">Chores</option>
<option value="Finance">Finance</option>
</select>
<br><br>
</form>
<p id="demo"></p>
我的代码允许我 select 一个单选选项,比如 'Work',并让下拉框自动 select 'Work' 作为响应。但是是否有可能更进一步 select 单选选项 'Work',并让 'Work' 下拉列表 selected 并且也变为蓝色,例如。 'Grocery' 为绿色,'Chores' 为红色,等等。甚至可能更进一步,让后续的任务列表项目也根据类别进行颜色编码?
//task entry interface is dynamically changed based on type of task entered
//dynamic list
$(document).ready(function ($) {
$(document).on('change', 'input[name="category"]', function () {
var lookup_val = $(this).val();
$("#mySelect option").filter(function () {
return $(this).val() === lookup_val;
}).first().prop('selected', true).siblings().prop('selected', false);
$("select[name='mySelect']").trigger({ type:'change', originalEvent:'custom' });
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="list-wrap" contenteditable="false">
<div class="list-inner-wrap">
<h2 class="title">ToDo List</h2>
<h3 class="title">Add Task</h2>
<!--<h4>Task Name</h4>-->
<form method="POST" action="..." name="radiodemo" id="radiodemo" onsubmit="getCategory();">
<label for="category"> Category:</label>
<input type="radio" id="grocery" name="category" value="Grocery" class="category" checked="checked">
<label for="grocery">Grocery</label>
<input type="radio" id="work" name="category" value="Work" class="category">
<label for="work">Work</label>
<input type="radio" id="chores" name="category" value="Chores" class="category">
<label for="chores">Chores</label>
<input type="radio" id="finance" name="category" value="Finance" class="category">
<label for="finance">Finance</label>
<br>
<!--dynamic radio option -->
Select your category:
<select id="mySelect">
<option value="Groceries">Groceries</option>
<option value="Work">Work</option>
<option value="Chores">Chores</option>
<option value="Finance">Finance</option>
</select>
<br><br>
</form>
<p id="demo"></p>
有可能:) 我为每个选择添加一个 if 并添加 class 并删除其他。
//task entry interface is dynamically changed based on type of task entered
//dynamic list
$(document).ready(function ($) {
$(document).on('change', 'input[name="category"]', function () {
var lookup_val = $(this).val();
$("#mySelect option").filter(function () {
return $(this).val() === lookup_val;
}).first().prop('selected', true).siblings().prop('selected', false);
$("select[name='mySelect']").trigger({ type:'change', originalEvent:'custom' });
$( "#mySelect" ).removeClass();
if(lookup_val === 'Groceries'){
$( "#mySelect" ).addClass( "red" );
}else if(lookup_val === 'Work'){
$( "#mySelect" ).addClass( "blue" );
}else if(lookup_val === 'Chores'){
$( "#mySelect" ).addClass( "green" );
}else if(lookup_val === 'Finance'){
$( "#mySelect" ).addClass( "yellow" );
}
});
});
.red{
background-color:red;
color:white;
}
.blue{
background-color:blue;
color:white;
}
.green{
background-color:green;
color:white;
}
.yellow{
background-color:yellow;
color:white;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="list-wrap" contenteditable="false">
<div class="list-inner-wrap">
<h2 class="title">ToDo List</h2>
<h3 class="title">Add Task</h2>
<!--<h4>Task Name</h4>-->
<form method="POST" action="..." name="radiodemo" id="radiodemo" onsubmit="getCategory();">
<label for="category"> Category:</label>
<input type="radio" id="grocery" name="category" value="Grocery" class="category" checked="checked">
<label for="grocery">Grocery</label>
<input type="radio" id="work" name="category" value="Work" class="category">
<label for="work">Work</label>
<input type="radio" id="chores" name="category" value="Chores" class="category">
<label for="chores">Chores</label>
<input type="radio" id="finance" name="category" value="Finance" class="category">
<label for="finance">Finance</label>
<br>
<!--dynamic radio option -->
Select your category:
<select id="mySelect" class='red'>
<option value="Groceries">Groceries</option>
<option value="Work">Work</option>
<option value="Chores">Chores</option>
<option value="Finance">Finance</option>
</select>
<br><br>
</form>
<p id="demo"></p>