2012-05-15 12 views
5

में Shiftkey दबाया गया है मैंने एक जेएस फ़ंक्शन लिखा है जो केवल संख्याओं को दर्ज करने की अनुमति देता है। कि समारोह की एक प्रति नीचे है:क्या जावास्क्रिप्ट

function NumbersOnly(e) { 
    var evt = e || window.event; 
    if (evt) { 
     var keyCode = evt.charCode || evt.keyCode; 
     //Allow tab, backspace and numbers to be pressed, otherwise return false for everything. 
     //(keyCode>=96 && keyCode<=105) are the numpad numbers   
     if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105) || keyCode === 9 || keyCode === 8) { 


     } 
     else { 

      evt.returnValue = false; 
     } 
    } 
} 

इस समारोह सभी नंबरों के साथ ठीक काम करता है, लेकिन जब पारी कुंजी के दबे और नंबर कुंजियों में से एक दबाया जाता है मेरी समस्या होता है। लौटाया गया मूल्य संख्याओं के ऊपर वर्णों में से एक है। तो उदाहरण के लिए यदि मैं शिफ्ट दबाता हूं और 7 दबाता हूं, '&' वापस कर दिया जाता है लेकिन कुंजीकोड अभी भी 55 है !! मैं उम्मीद करता था कि अलग होना चाहिए।

तो मेरा सवाल यह है कि मैं कैसे जांचूं कि शिफ्ट कुंजी को दबाया जा रहा है या नहीं। मैं निम्नलिखित की जांच की कोशिश की है, लेकिन यह काम नहीं किया:

if (keyCode === 16) { 
     evt.returnValue = false; 
    } 
    else { 

     if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105) || keyCode === 9 || keyCode === 8) { 


     } 
     else { 

      evt.returnValue = false; 
     } 
    } 

मैं ASP.NET 4.0 उपयोग कर रहा हूँ।

किसी भी मदद की सराहना की जाएगी।

अग्रिम धन्यवाद।

+0

आप console.log में evt दे, तो आप shiftKey विशेषता देखेंगे, अगर shift कुंजी दबाया जाता है, यह सच –

उत्तर

12

आप देख सकते हैं शिफ्ट कुंजी का उपयोग कर दबाया जाता है:

if(evt.shiftKey) { 
... //returns true if shift key is pressed 
+0

शानदार हो जाएगा। यह काम। आपके समय के लिए धन्यवाद – Sun

+0

मेरे लिए 'evt.shiftKey' काम नहीं करता है, इसे 'event.shiftKey' में बदलें। यह काम करेगा। – Shafizadeh

+0

@ सज़ाद, आप बिंदु खो रहे हैं। 'evt' सिर्फ एक चर है, ऊपर दिए गए प्रश्न के संदर्भ में मेरे उत्तर में 'evt' का उपयोग किया जाता है .. प्रश्न में चर 'evt' देखें, लाइन :: var evt = e || window.event; मुझे उम्मीद है कि अब आप इसे प्राप्त करेंगे। –

0

उपयोग event.key बजायcharCodeकोई और जादू संख्या नहीं!

function onEvent(event) { 
    const key = event.key; // "a", "1", "Shift", etc. 
    if (isFinite(key)) { // Is number 
     // Do work 
    } 
}; 

Mozilla Docs

Supported Browsers

संबंधित मुद्दे