2016-08-28 73 views
1

我有4個無線電輸入。jQuery熱鍵只能使用一次

我給他們分配了熱鍵。 (熱鍵是1,2,3和4)

這裏是我的HTML代碼

<label> 
<input type="radio" value="2" id="1" name="1">[c2] 
</label> 
<label> 
<input type="radio" value="4" id="2" name="1">[c4] 
</label> 
<label> 
<input type="radio" value="1" id="3" name="1">[c1] 
</label> 
<label> 
<input type="radio" value="3" id="4" name="1">[c3] 
</label> 

的JavaScript代碼

$(document).keypress(function(e) { 

    if(e.charCode == 49) { 
    console.log("1"); 
    $('input:radio[id=1]').attr('checked',true); 
    } 

    if(e.charCode == 50) { 
    console.log("2"); 
    $('input:radio[id=2]').attr('checked',true); 
    } 

    if(e.charCode == 51) { 
    console.log("3"); 
    $('input:radio[id=3]').attr('checked',true); 
    } 

    if(e.charCode == 52) { 
    console.log("4"); 
    $('input:radio[id=4]').attr('checked',true); 
    }     
}); 

你也可以看到,我將console.log事件寫入腳本以便觀察。

對我而言,奇怪的是,我可以通過熱鍵每個單選按鈕選擇一次redio按鈕。

*

如果我按1,它選擇了正確的複選框,並給了我正確的控制檯日誌。

然後我按2,並工作相同。

但是,如果我再次按1,它會給我控制檯日誌,但熱鍵不起作用。

這裏是的jsfiddlehttps://jsfiddle.net/f07evno0/

我怎樣才能讓熱鍵工作不止一次在一個會議?

回答

4

您可能需要使用

$("input:radio[id=2]").prop("checked", true) 

$(document).keypress(function (e) { 
 

 
     if (e.charCode == 49) { 
 
      console.log("1"); 
 
      $('input:radio[id=1]').prop('checked', true); 
 
     } 
 

 
     if (e.charCode == 50) { 
 
      console.log("2"); 
 
      $('input:radio[id=2]').prop('checked', true); 
 
     } 
 

 
     if (e.charCode == 51) { 
 
      console.log("3"); 
 
      $('input:radio[id=3]').prop('checked', true); 
 
     } 
 

 
     if (e.charCode == 52) { 
 
      console.log("4"); 
 
      $('input:radio[id=4]').prop('checked', true); 
 
     } 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<label> 
 
    <input type="radio" value="2" id="1" name="1">[c2] 
 
</label> 
 
<label> 
 
    <input type="radio" value="4" id="2" name="1">[c4] 
 
</label> 
 
<label> 
 
    <input type="radio" value="1" id="3" name="1">[c1] 
 
</label> 
 
<label> 
 
    <input type="radio" value="3" id="4" name="1">[c3] 
 
</label>

嘗試在https://jsfiddle.net/f07evno0/1/

+1

另外看看這個:http://stackoverflow.com/questions/5874652/prop-vs-attr有解釋。 –

+0

你應該擴大這個答案,並解釋爲什麼這個作品與OP的方法相比:) –

1

我不找出原因,但是這個代碼的工作:

$(document).keypress(function(e) { 

    if(e.charCode == 49) { 
    console.log("1"); 
    //$('input:radio[id=1]').attr('checked',true); 
    $('input:radio[id=1]')[0].checked= "checked" 
    } 

    if(e.charCode == 50) { 
    console.log("2"); 
    //$('input:radio[id=2]').attr('checked',true); 
    $('input:radio[id=2]')[0].checked= "checked" 
    } 

    if(e.charCode == 51) { 
    console.log("3"); 
    //$('input:radio[id=3]').attr('checked',true); 
    $('input:radio[id=3]')[0].checked= "checked" 
    } 

    if(e.charCode == 52) { 
    console.log("4"); 
    //$('input:radio[id=4]').attr('checked',true); 
    $('input:radio[id=4]')[0].checked= "checked" 
    }     
});