सवाल यह पता लगाने के लिए कि कौन सी वर्ण कुंजी दबाई जाती है?


मैं यह जानना चाहता हूं कि शुद्ध जावास्क्रिप्ट में क्रॉस-ब्राउज़र संगत तरीके से कौन सी वर्ण कुंजी दबाई जाती है।


76
2017-12-04 12:17


मूल


सवाल के लिए ये सभी जवाब नहीं हैं "क्या कुंजी था दबाया गया? "क्या होगा, जैसा कि यह निष्पादित हो रहा है, जावास्क्रिप्ट कोड जानना चाहता है कि कीबोर्ड पर एक कुंजी वर्तमान में दबाई गई है या नहीं? - mwardm
event.key सीधे आपको दबाए गए चार को देगा - Gibolt


जवाब:


"साफ़ करें" जावास्क्रिप्ट:

<script type="text/javascript">
  function myKeyPress(e){
    var keynum;

    if(window.event) { // IE                    
      keynum = e.keyCode;
    } else if(e.which){ // Netscape/Firefox/Opera                   
      keynum = e.which;
    }

    alert(String.fromCharCode(keynum));
  }
</script>

<form>
  <input type="text" onkeypress="return myKeyPress(event)" />
</form>

JQuery:

$(document).keypress(function(event){
  alert(String.fromCharCode(event.which)); 
});

128
2017-12-04 12:36



यह वर्णमाला वर्णों के लिए ठीक काम करता है, लेकिन डॉट्स / ब्रैकेट्स और अन्य टाइपोग्राटाफिक प्रतीकों के बारे में क्या है? - VoVaVc
@VoVaVc: यह उन लोगों के लिए भी काम करता है। महत्वपूर्ण बात का उपयोग कर रहा है keypress घटना, जो आपको बजाय एक चरित्र कोड देता है keyup या keydown जो आपको एक महत्वपूर्ण कोड देता है। - Tim Down
e.which पदावनत किया गया है। उपयोग e.key इसके बजाए, जैसा कि में if(e.key == 'z') - aljgom
@aljgom, e.key अभी भी पूर्ण ब्राउज़र समर्थन नहीं है। - Andy Mercer
उन प्रतीकों के लिए काम नहीं करता है जिन्हें आपको बनाने के लिए शिफ्ट दबाएं, जैसे! - Curtis


यहां इस प्रश्न के लाखों डुप्लिकेट हैं, लेकिन फिर भी यहां फिर से चला जाता है:

document.onkeypress = function(evt) {
    evt = evt || window.event;
    var charCode = evt.keyCode || evt.which;
    var charStr = String.fromCharCode(charCode);
    alert(charStr);
};

मैंने देखा महत्वपूर्ण घटनाओं पर सबसे अच्छा संदर्भ है http://unixpapa.com/js/key.html


27
2017-12-04 12:41





अधिक हालिया और अधिक क्लीनर: उपयोग करें event.key। कोई मनमाना संख्या कोड नहीं!

node.addEventListener('keydown', function(event) {
    const key = event.key; // "a", "1", "Shift", etc.
});

यदि आप यह सुनिश्चित करना चाहते हैं कि केवल एक वर्ण दर्ज किए गए हैं, तो जांचें key.length === 1, या यह आपके द्वारा अपेक्षित पात्रों में से एक है।

मोज़िला डॉक्स

समर्थित ब्राउज़र


6
2017-09-05 18:03





क्रॉस ब्राउज़र असंगतताओं के लिए इस साइट पर एक नज़र डालें http://www.quirksmode.org/js/keys.html


2
2017-12-04 12:26



केवल कुछ ब्राउज़रों (विशेष रूप से फ़ायरफ़ॉक्स नहीं) में कीप्रेस ईवेंट पर। - Tim Down
@ टिम गुड प्वाइंट - वास्तव में मैं इसे बाहर ले जाऊंगा। - Matt


इसका प्रयोग करें:

function onKeyPress(evt){
  evt = (evt) ? evt : (window.event) ? event : null;
  if (evt)
  {
    var charCode = (evt.charCode) ? evt.charCode :((evt.keyCode) ? evt.keyCode :((evt.which) ? evt.which : 0));
    if (charCode == 13) 
        alert('User pressed Enter');
  }
}

1
2017-12-04 12:31





**check this out** 
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $(document).keypress(function(e)
        {

            var keynum;
            if(window.event)
            { // IE                 
                keynum = e.keyCode;
            }
                else if(e.which)
                    { 
                    // Netscape/Firefox/Opera                   
                    keynum = e.which;
                    }
                    alert(String.fromCharCode(keynum));
                    var unicode=e.keyCode? e.keyCode : e.charCode;
                    alert(unicode);
        });
});  

</script>
</head>
<body>

<input type="text"></input>
</body>
</html>

1
2017-12-08 12:31



क्या यह @ कोयोड के 200 9 के जवाब का निकटतम डुप्लिकेट नहीं है? - Chris F Carroll


एक परिष्कृत तरीके से ऐसा करने के लिए मेरे पसंदीदा पुस्तकालयों में से एक है चूहादानी

यह विभिन्न प्रकार के प्लगइन के साथ आता है, जिनमें से एक है record प्लगइन जो दबाए गए कुंजियों के अनुक्रम की पहचान कर सकता है।

उदाहरण:

<script>
    function recordSequence() {
        Mousetrap.record(function(sequence) {
            // sequence is an array like ['ctrl+k', 'c']
            alert('You pressed: ' + sequence.join(' '));
        });
    }
</script>


<button onclick="recordSequence()">Record</button>

1
2017-11-13 13:47



सच है। करूँगा। - dipole_moment
@DanLowe मैंने अभी एक स्निपेट जोड़ा है। - dipole_moment


document.onkeypress = function(event){
    alert(event.key)
}

-2
2018-03-07 19:10