Javascript 跳出.on(';单击';)
我有一个单选按钮,它有一个下拉框:Javascript 跳出.on(';单击';),javascript,html,jquery,Javascript,Html,Jquery,我有一个单选按钮,它有一个下拉框: <form> <input type="radio" id="pan" class="radioButton" value="pan"> <label for="pan">PAN</label> <input type="radio" id="singleColor&
<form>
<input type="radio" id="pan" class="radioButton" value="pan">
<label for="pan">PAN</label>
<input type="radio" id="singleColor" class="radioButton" value="singleColor">
<label for="singleColor">
<span>
<select name="imageColor" id="selectedColor">
<option value="red" selected="selected">Red</option>
<option value="red">Green</option>
<option value="red">Blue</option>
</select>
</span>
</label>
</form>
因此,本质上——当没有为此选择单选按钮时——但我使用下拉菜单,它仍然可以访问您可以在图像中显示的内容。它只有在您单击单选按钮时才能访问,因此最初,如果您刷新页面并单击下拉列表,您将不会得到响应…
但是,当您单击下拉列表的单选按钮,然后单击另一个单选按钮,然后访问下拉列表时,您将始终得到响应 抱歉,如果这有点罗嗦的话……我很难解释这个问题 如果你需要更多的信息,请告诉我。谢谢大家! 当您单击
#singleColor
收音机时,您会将更改
事件侦听器附加到另一个元素上,并保持在该元素上。然后,不管是否单击了单选按钮,都会在下拉元素值更改时执行另一个事件侦听器
正确的解决方案是只将一次change
event listener附加到下拉列表中,然后检查是否选中了单色收音机
$('#selectedColor')。更改(函数(){
如果(!$('#singleColor')。是(':checked'))
return;//如果未检查收音机,则不执行任何操作
如果($(this.val()=“red”){
//用于red的ajax代码
}
如果($(this.val()=“绿色”){
//绿色的ajax代码
}
}
另外,如果您想在“无线电”检查中触发此事件和ajax功能,只需在无线电单击事件中的下拉元素上使用触发功能:
$('singleColor')。在('click'函数(){
$('selectedColor')。触发器('change');
});
据我所知,您的问题是,您希望颜色值仅在选择收音机时更改,如果未选择,则即使选择了PAN收音机,颜色值也不应更改
您可以尝试下面的代码片段
$('#selectedColor').on('change', function(){
if($('#singleColor').is(':checked')){
if($('#selectedColor').val() === "red") {
//ajax code for red
}
if($('#selectedColor').val() === "green") {
//ajax code for green
}
}
})
$('#singleColor').on('click', function(){
if($('#selectedColor').val() === "red") {
//ajax code for red
}
if($('#selectedColor').val() === "green") {
//ajax code for green
}
})
养成将变量设置为从函数中获得的值的习惯,例如$(“#selectedColor”).val()
(实际上是两个函数),如果您不止一次使用该值。以后的开发人员将感谢您。非常感谢!天哪,我一直在尝试使用该值的一切,现在您提到了它,这完全有道理。感谢您的帮助!不客气:)如果您想在电台单击上执行所有这些,我已经编辑了我的答案并添加了一件事。
$('#selectedColor').on('change', function(){
if($('#singleColor').is(':checked')){
if($('#selectedColor').val() === "red") {
//ajax code for red
}
if($('#selectedColor').val() === "green") {
//ajax code for green
}
}
})
$('#singleColor').on('click', function(){
if($('#selectedColor').val() === "red") {
//ajax code for red
}
if($('#selectedColor').val() === "green") {
//ajax code for green
}
})