Javascript 当dropdownlist包含一项时,不会触发jQuery更改
我试图在单击下拉列表中的选项时触发事件。我找不到任何解释怎么做的东西。我想要的是触发事件并使用它的值。当我使用.on而不是.change时,我会在每次单击select时触发事件,而这不是我想要的,因为我只想使用所选项目的值 假设这是动态生成的:Javascript 当dropdownlist包含一项时,不会触发jQuery更改,javascript,jquery,Javascript,Jquery,我试图在单击下拉列表中的选项时触发事件。我找不到任何解释怎么做的东西。我想要的是触发事件并使用它的值。当我使用.on而不是.change时,我会在每次单击select时触发事件,而这不是我想要的,因为我只想使用所选项目的值 假设这是动态生成的: <select id="dropdownOne"> <option value="1">NumberOne</option> </select> 我怎样才能: 触发dropdownlist中仅包含一个项
<select id="dropdownOne">
<option value="1">NumberOne</option>
</select>
我怎样才能:
- 触发dropdownlist中仅包含一个项目的项目上的事件
- 在多次单击的项目上触发事件
var value;
$('select').focus(function () {
value = this.value;
if(value == 1){
console.log("This logs number 1");
}else{
console.log("This logs number 2");
}
}).change(function() {
value = this.value;
if(value == 1){
console.log("This logs number 1");
}else{
console.log("This logs number 2");
}
});
以下是JSFIDLE链接:
对于select下拉列表中的一个项目,我得到了value focus事件,在选择item之后,通过change事件更新value。希望它能实现你的目标 下面的代码可能满足您的需要,尽管它并不完全符合您的要求。当你点击标有选项的按钮时,它会打开一个小菜单,而当你点击关闭菜单时,它就会消失。虽然它实际上不是一个下拉菜单,但它起着一个下拉菜单的作用 问题是您试图改变控件的内部结构,而不是基于控件本身进行操作。除了在接口中指定之外,Javascript对控件的内部几乎没有控制权 看
var按钮;
可变区;
var菜单;
var闭合器;
函数启动器(){
button=document.getElementById(“按钮”);
textarea=document.getElementById(“textarea”);
menu=document.getElementById(“菜单”);
closer=document.getElementById(“close”);
textarea.value=“选择的显示区域\r\n”;
button.onclick=打开;
closer.onclick=关闭;
}
函数关闭(){
menu.style.display=“无”;
menu.style.visibility=“隐藏”;
}
函数open(){
menu.style.display=“block”;
menu.style.visibility=“可见”;
}
功能按键(字符){
textarea.value=textarea.value+char+“\r\n”;
}
window.onload=启动器;
#菜单{显示:无;边框:2px纯黑色;}
单击标记有选项的按钮打开菜单进行选择
单击选项将使其显示在文本框中
- 根据定义:
当元素的值已更改时发生onchange事件
变了
只有一个选项时,如:
<select id="dropdownOne">
<option value="1">NumberOne</option>
</select>
或者,您可以创建自定义选择控件,如所建议的change
事件的问题是什么?您可以在注册事件时调用处理程序<代码>$(“选择”).on(“更改”,函数(){}).change()代码>$(“选择”)。更改(“单击”,函数(){
或$(“选择”)。在(“单击/更改”,函数(){
?在下拉列表中同时包含单击
和更改
事件是个坏主意,更改事件之后是单击下拉列表本身。因此最好决定何时附加单击
事件。这些都不起作用,最终我希望触发更改(或任何更改)当下拉列表中只有一个选项可用时,可以处理选项单击的事件,但我不想仅在单击实际选项时通过单击下拉箭头触发事件。请尝试此$(“选择”).change(函数(){$('#选择选项:已选择').val()}
这是最简单的解决方案。默认选择第一个选项可防止触发onchange。如果不想开发自定义下拉列表,在顶部添加占位符选项是实现此目的的唯一方法。
var value;
$('select').focus(function () {
value = this.value;
if(value == 1){
console.log("This logs number 1");
}else{
console.log("This logs number 2");
}
}).change(function() {
value = this.value;
if(value == 1){
console.log("This logs number 1");
}else{
console.log("This logs number 2");
}
});
<select id="dropdownOne">
<option value="1">NumberOne</option>
</select>
<select id="dropdownOne">
<option value="-1">--- Select ---</option>
<option value="1">NumberOne</option>
</select>