Javascript jquery选择选项单击处理程序
鉴于:Javascript jquery选择选项单击处理程序,javascript,jquery,html,Javascript,Jquery,Html,鉴于: .. ... 使用select id,如何在其中一个选项上触发单击事件?我尝试将事件直接附加到select,但只要单击select,就会触发事件(即使没有选项)。哦,这是一个多选(虽然我不认为这有什么关系)。您想要的是“更改”事件处理程序,而不是“单击” <select id="mySelect"> <option>..</option> ... </select> 在这种情况下,我所做的是在option elements O
..
...
使用select id,如何在其中一个选项上触发单击事件?我尝试将事件直接附加到select,但只要单击select,就会触发事件(即使没有选项)。哦,这是一个多选(虽然我不认为这有什么关系)。您想要的是“更改”事件处理程序,而不是“单击”
<select id="mySelect">
<option>..</option>
...
</select>
在这种情况下,我所做的是在option elements OnClick事件中输入如下内容:
$('#mySelect').change(function(){
var value = $(this).val();
});
<option onClick="something();">Option Name</option>
更新:
不幸的是,我不能发表评论,所以我正在更新这里TrueBlueAussie显然jsfiddle出现了一些问题,请检查它是否有效:您可以附加一个焦点事件进行选择
function something(){
alert("Hello");
}
一种可能的解决方案是为每个选项添加一个类
$('#select_id').focus(function() {
console.log('Handler for .focus() called.');
});
更新:看起来代码在FF、IE和Opera中工作,但在Chrome中不工作。
看看这些规格,我会说这是Chrome的一个缺陷。
$('#mySelect')。在('change',function()上{
var值=$(this.val();
警报(值);
});代码>
1.
2.
3.
4.
5.
6.
7.
8.
我使用更改处理程序时遇到的问题是,每次我在上下滚动时,它都会触发
我想在单击某个选项或在所需选项上按下enter
时获取事件。我就是这样做的:
$(document).ready(function () {
$(".export_option").click(function (e) {
//alert('click');
});
});
它对我有用
let blockChange = false;
$element.keydown(function (e) {
const keycode = (e.keyCode ? e.keyCode : e.which);
// prevents select opening when enter is pressed
if (keycode === 13) {
e.preventDefault();
}
// lets the change event know that these keypresses are to be ignored
if([38, 40].indexOf(keycode) > -1){
blockChange = true;
}
});
$element.keyup(function(e) {
const keycode = (e.keyCode ? e.keyCode : e.which);
// handle enter press
if(keycode === 13) {
doSomething();
}
});
$element.change(function(e) {
// this effective handles the click only as preventDefault was used on enter
if(!blockChange) {
doSomething();
}
blockChange = false;
});
$(“#选择>选项”)。在(“单击”上,函数(){
警报(1)
})
您也可以尝试此操作以获取select的上一个值和单击的值
HTML
<select name="" id="select">
<option value="1"></option>
<option value="2"></option>
<option value="3"></option>
</select>
<script>
$("#select > option").on("click", function () {
alert(1)
})
</script>
如果他们选择相同的选项怎么办?更改事件不可用triggered@haz0rd您将只能通过单击事件检测到,您将获得2。1当您第一次单击“选择”时,1当您选择已选择的选项时,请注意,单击
事件目前在Chrome中根本没有为
元素生成。@gon编码有没有办法绕过单击
而不在Chrome中触发?这不是他要求的或他“想要的”。他要求在点击其中一个选项时触发一个事件。您的答案是一种变通方法,当您在更改事件@TrueBlueAussie刚刚在FF和IE中测试了您的小提琴时,单击“默认”或“相同选项”时不会触发。当您需要更改事件之前的值时,此处的“良好答案”将不会触发此方法,它可以作为expected@TrueBlueAussie即使在古老的好歌剧12中,它也能起作用@TrueBlueAustie我知道,你只在chrome上测试过它,我在chrome之外的其他地方测试过它。否则你应该写“它在crome中不起作用”,而不是“点击事件被下拉菜单吃掉”,这显然是不正确的。看我的更新那是不切实际的。如果它不能在最流行的浏览器中工作,那么它就不是一个实用的解决方案。我不负责在所有浏览器中测试您的答案。这将是你的:)先前的模棱两可的评论被删除。只是为了给学究们澄清一下:在撰写本文时,这个解决方案不适用于Chrome:这目前不适用于Chrome,因此应该避免:p.s您的代码缺少javascript代码,所以……下次至少要确保您已经将所有内容都实现到了别人的建议中,并通过“Chrome”进行检查调试器,它不工作,为什么!!在警告其他用户之前!!它不起作用,而且没有投票权;)该测试所需的唯一Javascript是内联的。如果你真的费心把你的
放在一个
中,使它成为有效的HTML,你会发现你的代码在Chrome上不起作用:否决票是正确的。在Chrome修复该问题之前,不应使用此代码:Pvar value=This.value也能很好地解决此问题。无需在jQuery选择中打包,请考虑对答案添加解释,以便其他人理解逻辑。
<select name="" id="select">
<option value="1"></option>
<option value="2"></option>
<option value="3"></option>
</select>
<script>
$("#select > option").on("click", function () {
alert(1)
})
</script>
<select name="status">
<option value="confirmed">confirmed</option>
<option value="packed">packed</option>
<option value="shiped">shiped</option>
<option value="delivered">delivered</option>
</select>
var previous;
$("select[name=status]").focus(function () {
previous = this.value;
}).change(function() {
var next = $(this).val()
alert("previous: "+previous+ " and Next: "+ next)
previous = this.value;
});