Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 跳出.on(';单击';)_Javascript_Html_Jquery - Fatal编程技术网

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
    }
})