【问题标题】:Is it possible to change the color of radio button on click event using jquery?是否可以使用 jquery 更改单击事件上单选按钮的颜色?
【发布时间】:2021-09-23 23:57:23
【问题描述】:

我的输入框是这样的

<div>
  <div>
    <input type="radio" name="radioBtn" value="true" id="radioYes" class="radioBtn"/><br />
    <span>Yes</span>
  </div>
  <div>
    <input type="radio" name="radioBtn" value="true" id="radioNo" class="radioBtn"/><br />
    <span>No</span>
  </div>
</div>

当用户点击这些单选按钮时,我会触发一个点击事件,并且我想更改单选按钮的颜色。 我尝试了以下方法,但没有运气。它似乎没有将单选按钮的颜色更改为红色。我在这里遗漏了什么吗?还是我做错了什么?任何意见都非常感谢。

提前致谢。

$("input[name^='radioBtn']").click(function (event) {

//Change color of radio button to red
$(".radioBtn").css("color","red");

if($("#radioYes").is(':checked')) {
//Do something
}else{
//Do something
}

});

注意:我只想在触发点击事件时更改单选按钮的颜色。我之所以指定这一点,是因为还有其他调用会修改此单选按钮的值,但它们不会在点击事件时触发。

【问题讨论】:

  • 因此,如果选中,您希望将一种颜色设置为单选按钮,如果未选中,则设置另一种颜色。对吗?
  • stackoverflow.com/questions/4253920/… - 无法更改单选按钮的颜色,除非您自己使用自定义按钮
  • 是的,这就是我想要实现的目标。选中时为单选按钮设置颜色,未选中时设置另一种颜色。

标签: javascript jquery css events radio-button


【解决方案1】:

您可以在使用 :checked:after 选中的单选按钮上应用一些 CSS。

$("input[name^='radioBtn']").click(function(event) {
  $(this).addClass('test');
  if ($("#radioYes").is(':checked')) {
    //Do something
  } else {
    //Do something
  }

});
.test:checked:after {
  width: 15px;
  height: 15px;
  border-radius: 15px;
  top: -2px;
  left: -1px;
  position: relative;
  background-color: red;
  content: '';
  display: inline-block;
  visibility: visible;
  border: 1px solid white;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <div>
    <input type="radio" name="radioBtn" value="true" id="radioYes" class="radioBtn" /><br />
    <span>Yes</span>
  </div>
  <div>
    <input type="radio" name="radioBtn" value="true" id="radioNo" class="radioBtn" /><br />
    <span>No</span>
  </div>
</div>

注意:您可以根据需要更改 CSS 属性。

【讨论】:

  • 我试图以某种方式使用 jquery 选择器和 .css() 方法来实现这一点,因为还有其他调用会修改单选按钮的值。但我只想在触发点击事件时将单选按钮的颜色更改为红色。上面的 CSS 解决方案肯定会改变单选按钮的颜色,但恐怕它不会针对特定事件。非常感谢您的回答
  • 查看更新的答案。如果你想通过 jQuery 你可以使用addClass .
  • 上述解决方案在 Chrome 中就像魔术一样工作。但是,看起来 Internet Explorer 不支持伪类 :(。虽然我可以看到该类已添加到我的输入元素中,但 IE 中的单选按钮颜色保持不变。有关如何使其适用于 IE 的任何建议? 。我在其他帖子上找到的其他解决方案都是基于完全隐藏单选按钮和标签样式。有什么建议吗?提前谢谢。
【解决方案2】:

.radioBtn {
  width: 0;
  height: 0;
  position: relative;
}

.radioBtn::after, .radioBtn::before {
  content: '';
  display: inline-block;
  position: absolute;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: 1px solid blue;
}

.radioBtn::before {
  width: 6px;
  height: 6px;
  left: 2px;
  top: 2px;
  border-color: transparent;
}

.radioBtn:checked::before {
  border-color: red;
  background-color: red;
}
.radioBtn:checked::after {
  border-color: red;
}

.parent {
  display: inline-flex;
}

label {
  margin-left: 10px;
}
<div class='parent'>
    <input type="radio" name="radioBtn" value="true" id="radioYes" class="radioBtn"/><br />
    <label for="radioYes">Yes</label>
  </div>
  <div class='parent'>
    <input type="radio" name="radioBtn" value="true" id="radioNo" class="radioBtn"/><br />
    <label for="radioNo">No</label>
  </div>

检查一下,我已经重新创建了您的要求。如果有任何需要,请告诉我。在这里,我使用输入的伪类创建了一个自定义元素。

【讨论】:

  • 我试图以某种方式使用 jquery 选择器和 .css() 方法来实现这一点,因为还有其他调用会修改单选按钮的值。但我只想在触发点击事件时将单选按钮的颜色更改为红色。上面的 CSS 解决方案肯定会改变单选按钮的颜色,但恐怕它不会针对特定事件。非常感谢您的回答
  • 但是单选按钮的变化只发生在点击时,但是如果你也需要使用 JavaScript 的解决方案,同样的方式你可以添加你的 JS 代码,而不是 :checked,你可以使用添加一些类名并根据类名更改颜色,我猜这对你有用。
  • 还有其他调用使用 prop() 方法设置单选按钮的值而不触发点击事件。在这种情况下,我不想更改单选按钮的颜色。 :) $("input#radioYes").prop("checked",true);或 $("input#radioNo").prop("checked",true);再次感谢您的建议:)
  • @curiousCat,但是根据您的代码,当您单击其中一个单选按钮时,两个单选按钮都会显示为红色,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-21
  • 2014-06-03
  • 2019-12-03
  • 2021-09-08
  • 2018-12-18
  • 2013-07-26
  • 2014-08-26
相关资源
最近更新 更多