javascript - jQuery如何设置/取消下拉菜单的背景颜色

标签 javascript jquery drop-down-menu colors

脚本需要 jQuery

一切正常,但我需要能够在选项框选择所选下拉菜单时将其颜色更改为(亮绿色)。如果选择了其他选项,则再次变灰。

我已经尝试了我阅读过的所有建议技巧,即 $( "#mOptions").prop (.css('background-color','#ffffff'));任何颜色。 请帮忙,非常感谢。没用

脚本

$(document).ready(function(){
    $('input[name="gender"]').click(function() {
       if($('input[name="gender"]').is(':checked')) { 
           var radioValue = $("input[name='gender']:checked").val();
            if(radioValue == "m"){
               $( "#mOptions" ).prop( "disabled", false );
               $( "#fOptions" ).prop( "disabled", true );
            } else {
                $( "#mOptions" ).prop( "disabled", true );
               $( "#fOptions" ).prop( "disabled", false );
            }
       }
    });
});

表格:

<input type="radio" name="gender" value="m" />Male
<input type="radio" name="gender" value="f" />Female
<br />
<select id="mOptions" disabled="true">
    <option>Select</option>
    <option value="1">Shirt</option>
    <option value="2">Pant</option>
    <option value="3">dhoti</option>
</select>

<select id="fOptions" disabled="true">
    <option>Select</option>
    <option value="4">Saree</option>
    <option value="5">Bangle</option>
    <option value="6">handbag</option>
</select>

最佳答案

您可以像这样将 css 方法链接到 prop 方法:

$('input[name="gender"]').click(function() {
  if($('input[name="gender"]').is(':checked')) { 
    var radioValue = $("input[name='gender']:checked").val();
    if(radioValue == "m"){
      $( "#mOptions" ).prop( "disabled", false ).css('background-color', 'lightgreen');
      $( "#fOptions" ).prop( "disabled", true  ).css('background-color', '');
    } else {
      $( "#mOptions" ).prop( "disabled", true  ).css('background-color', '');
      $( "#fOptions" ).prop( "disabled", false ).css('background-color', 'lightgreen');;
    }
  }
});

您还可以考虑将other 下拉菜单的值重置为“已选择”,这样您就不会以具有值的禁用下拉菜单结束。您可以这样做:

$( "#fOptions" ).prop( "disabled", true  ).css('background-color', '').val('Select'); 

为了更加用户友好,请考虑使用标签包装您的输入:

<label><input type="radio" name="gender" value="m" />Male</label>

这让您的用户除了可以选择微型单选按钮外,还可以点击“男性”一词。

Fiddle


你可以稍微简化一下逻辑。

单击单选按钮后,至少有一个按钮选中,并且无法同时取消选中它们。因此,不需要这个测试:

if($('input[name="gender"]').is(':checked'))

另外,要启用的select框可以这样直接查询:

select= $('#'+$(this).val()+'Options');

您只需启用那个选择框并禁用另一个。

更新代码:

$('input[name="gender"]').click(function() {
  var value= $(this).val(),
      select= $('#'+value+'Options');

  select
    .prop('disabled', false)
    .css('background-color', 'lightgreen');

  $('#mOptions, #fOptions')
    .not(select)
    .prop('disabled', true)
    .css('background-color', '')
    .val('Select');
});

New Fiddle

关于javascript - jQuery如何设置/取消下拉菜单的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29354379/

相关文章:

php - 在发送到服务器之前如何操作表单数据?

java - 当用户单击微调器中的一项时,它应该显示另一项数据将从 JSON Web 服务获取

javascript - 如何将动态生成的网页显示到新标签页?

javascript - 如何通过 div ID 读取动态文本框值并在另一个 jquery 中使用此 ID?

javascript - 更改部分网址文本并重新加载页面

javascript - 如何在 Chart.js v2.0 中的标签上添加 OnClick 事件?

jquery - 单击 jQuery 更改图像

javascript - 替换()正则表达式多换行符字符串不起作用javascript

jQuery 通配符选择器

带有垂直子菜单的 jquery 水平菜单