Javascript 传递Ctrl+;单击事件以在Firefox中添加其他元素
据我所知,Firefox不会将Ctrl+Click从标签传递到目标输入字段。我不知道如何才能做到这一点。我有复选框字段,这些字段是隐藏的,它们各自的标签的样式是唯一的和可见的。。。单击标签时,单击“注册”,但单击“控制”不会 这有点老套,但它很管用:Javascript 传递Ctrl+;单击事件以在Firefox中添加其他元素,javascript,jquery,Javascript,Jquery,据我所知,Firefox不会将Ctrl+Click从标签传递到目标输入字段。我不知道如何才能做到这一点。我有复选框字段,这些字段是隐藏的,它们各自的标签的样式是唯一的和可见的。。。单击标签时,单击“注册”,但单击“控制”不会 这有点老套,但它很管用: 标签 $(函数(){ var cb=$(“#cb”); var isFirefox=navigator.userAgent.toLowerCase().indexOf('firefox')>-1; $(“标签”)。单击(函数(e){ if(e.c
标签
$(函数(){
var cb=$(“#cb”);
var isFirefox=navigator.userAgent.toLowerCase().indexOf('firefox')>-1;
$(“标签”)。单击(函数(e){
if(e.ctrlKey&&isFirefox){
var checked=cb.prop(“checked”);
cb.prop('选中',!选中);
}
});
});
首先,将单击
事件附加到标签
,而不是输入
。这样,按住ctrl键时不会阻止事件,但复选框状态不会更改。因此,在回调中,我们检查e.ctrlKey
,如果是真的,我们手动更改该复选框的状态
请注意,我添加了
isFirefox
复选框,因为虽然此功能修复了Firefox中的行为,但在其他浏览器中却会出现问题。这有点黑客行为,但它可以:
标签
$(函数(){
var cb=$(“#cb”);
var isFirefox=navigator.userAgent.toLowerCase().indexOf('firefox')>-1;
$(“标签”)。单击(函数(e){
if(e.ctrlKey&&isFirefox){
var checked=cb.prop(“checked”);
cb.prop('选中',!选中);
}
});
});
首先,将单击
事件附加到标签
,而不是输入
。这样,按住ctrl键时不会阻止事件,但复选框状态不会更改。因此,在回调中,我们检查e.ctrlKey
,如果是真的,我们手动更改该复选框的状态
请注意,我添加了isFirefox
复选框,因为虽然此功能修复了Firefox中的行为,但它在其他浏览器中会中断。我假设html为
<form>
<label for="home" id="lblhome">home</label>
<input type="checkbox" name="home" id="home"><br>
</form>
因此,现在为标签检查创建处理程序如果是ctrl+单击如果是,则创建一个jquery事件,并在复选框中将其ctrlKey属性更改为true和trigger
$('#lblhome').click(
function(e){
if(e.ctrlKey) {
alert('ctrl+click on label');
//cancel the normal click
e.preventDefault();
e.stopPropagation();
e2 = jQuery.Event("click");
//e2.which = 50; // for other key combos like CTRL+A+click
e2.ctrlKey = true;
$( "#home").triggerHandler(e2);
$( "#home").prop("checked", !$( "#home").prop("checked"));//toggle checkbox state
}
});
演示:我假设html是
<form>
<label for="home" id="lblhome">home</label>
<input type="checkbox" name="home" id="home"><br>
</form>
因此,现在为标签检查创建处理程序如果是ctrl+单击如果是,则创建一个jquery事件,并在复选框中将其ctrlKey属性更改为true和trigger
$('#lblhome').click(
function(e){
if(e.ctrlKey) {
alert('ctrl+click on label');
//cancel the normal click
e.preventDefault();
e.stopPropagation();
e2 = jQuery.Event("click");
//e2.which = 50; // for other key combos like CTRL+A+click
e2.ctrlKey = true;
$( "#home").triggerHandler(e2);
$( "#home").prop("checked", !$( "#home").prop("checked"));//toggle checkbox state
}
});
演示:接近我所需要的,但不完全是,不过有用的信息是+1。我会记住这一点。接近我所需要的,但不完全是,有用的信息+1。我会记住这一点。