#javascript #html #jquery #css
Вопрос:
Я хочу изменить основной цвет поля ввода в зависимости от выбора пола.
До сих пор у меня было:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#male").click(function(){
$("#gender").css("backgroundColor:#0000FF");
});
</script>
<script>
$(document).ready(function(){
$("#female").click(function(){
$("#gender").css("backgroundColor:#FFC0CB");
});
</script>
<form>
<label for="gender">Gender:</label>
<select id="gender" name="gender">
<option value="male" selected>Male</option>
<option value="female">Female</option>
</select><br>
</form>
Это не сработало
Ответ №1:
вы можете иметь эту функцию JavaScript и вызывать ее onchange=
примерно так
function changeColor(el) {
if (el.value == "male")
{
document.body.style.backgroundColor = "#0000FF";
}
if (el.value == "female")
{
document.body.style.backgroundColor = "#FFC0CB";
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<form>
<label for="gender">Gender:</label>
<select id="gender" name="gender" onchange="changeColor(this)">
<option disabled selected value> -- select an option -- </option>
<option value="male">Male</option>
<option value="female">Female</option>
</select><br>
</form>
Комментарии:
1. А? ОП хочет выбрать пол, а не цвет в <выбрать>. Произвольное изменение значений параметров в соответствии с вашим кодом не имеет смысла
2. @charlietfl о, я вижу, хорошо, я обновил свой код
Ответ №2:
События не поддерживаются в <option>
кроссбраузерных элементах
Вы хотите использовать событие изменения выбранного, а затем условно заданного цвета на основе нового значения.
Также обратите внимание, что ваш синтаксис для css()
не совсем правильный
$("#gender").change(function() {
const color = this.value === 'female' ? '#FFC0CB' : '#0000FF';
$(this).css('backgroundColor', color)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<form>
<label for="gender">Gender:</label>
<select id="gender" name="gender">
<option value="male" selected>Male</option>
<option value="female">Female</option>
</select><br>
</form>
Ответ №3:
Получите текущую опцию:выбранное значение с помощью $(#gender option:selected).val()
, затем установите его с помощью селектора тегов элементов. В вашей функции изменения вы можете получить доступ к элементу с помощью $(this)
. Используйте условное обозначение, чтобы узнать, установлено ли оно $(this).val() === "male"
==> > $(this).css("background-color", "lightblue")
если $(this).css("background-color", "pink")
по умолчанию не установлено значение «женщина», так как это ваш единственный другой вариант.
$(document).ready(function() {
$('#gender option:selected').val() === "male" ? $('#gender').css("background-color", "lightblue") : $('#gender').css("background-color", "pink")
$("#gender").change(function(e) {
$(this).val() === "male" ? $(this).css("background-color", "lightblue") : $(this).css("background-color", "pink")
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<label for="gender">Gender:</label>
<select id="gender" name="gender">
<option value="male" selected>Male</option>
<option value="female">Female</option>
</select><br>
</form>