2016-06-15 110 views

回答

1

我認爲HTML作爲

<form> 
<label for="home" id="lblhome">home</label> 
<input type="checkbox" name="home" id="home"><br> 
</form> 

我想一個事情,如果按Ctrl + cliked其他的事情,如果它只是點擊,該複選框單擊代碼

$("#home").click(function(e) { 
if(e.ctrlKey) 
    alert('i just got ctrl+cliked'); 
else 
alert('i just got clicked'); 
}); 

所以現在創建標籤檢查處理,如果是ctrl +點擊是,然後創建一個jQuery事件,並將其ctrlKey屬性設置爲true,並將觸發器複選框。

$('#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 
    } 
}); 

DEMO:https://jsfiddle.net/35g41aaL/

1

這是一種哈克,但它的工作原理:http://jsbin.com/dogelehena/edit?html,console,output

<input type="checkbox" id="cb"> 
<label for="cb">Label</label> 

<script> 
$(function() { 
    var cb = $('#cb'); 
    var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; 

    $('label').click(function (e) { 
    if (e.ctrlKey && isFirefox) { 
     var checked = cb.prop('checked'); 
     cb.prop('checked', !checked); 
    } 
    }); 
}); 
</script> 

首先,在安裝click事件到label而不是input。這樣,按住ctrl時該事件不會被阻止,但複選框狀態不會更改。所以在回調中,我們檢查e.ctrlKey,如果它是真的,我們手動更改複選框的狀態。

請注意,我添加了isFirefox檢查,因爲雖然此功能修復了Firefox中的行爲,但它會在其他瀏覽器中中斷。

+0

接近我所需要的,但不完全,一爲有用的信息,但。我會牢記這一點。 –

相關問題