2011-10-14 20 views
5

पर "नियंत्रण" कुंजी क्या जावास्क्रिप्ट या jQuery में साफ रास्ता नियंत्रण कुंजी को फ़िल्टर करना है। नियंत्रण कुंजी, मेरा मतलब है कि कोई भी कुंजी जो ए-जेड, 0-9, या विशेष वर्ण नहीं है (यानी!, @, #, आदि)। मैं बस 'शिफ्ट', 'Alt', F1-F9, कैप्स लॉक इत्यादि जैसे फ़िल्टर को फ़िल्टर करना चाहता हूंjQuery/जावास्क्रिप्ट - अस्वीकार keydown घटना

मुझे यकीन है कि मैं प्रत्येक तर्क ASCII कोड को ईवेंट तर्क से देख सकता हूं ... लेकिन मैं मैं सोच रहा हूं कि एक "क्लीनर" समाधान है या नहीं।

नोट: मैं IE 8 के लिए विशेष रूप एक आवेदन के विकास कर रहा हूँ

उत्तर

5

मैं कुछ इस तरह साथ चला गया:

function (e, inputElement) { 
    // If the user gives the textbox any keyboard input, mark the input box as "dirty" 
    var scope = this; 
    var k = e.which; 

    // Verify that the key entered is not a special key 
    if (k == 20 /* Caps lock */ 
    || k == 16 /* Shift */ 
    || k == 9 /* Tab */ 
    || k == 27 /* Escape Key */ 
    || k == 17 /* Control Key */ 
    || k == 91 /* Windows Command Key */ 
    || k == 19 /* Pause Break */ 
    || k == 18 /* Alt Key */ 
    || k == 93 /* Right Click Point Key */ 
    || (k >= 35 && k <= 40) /* Home, End, Arrow Keys */ 
    || k == 45 /* Insert Key */ 
    || (k >= 33 && k <= 34) /*Page Down, Page Up */ 
    || (k >= 112 && k <= 123) /* F1 - F12 */ 
    || (k >= 144 && k <= 145)) { /* Num Lock, Scroll Lock */ 
     return false; 
    } 
    else { 
     scope.setPointValueDirtyStatus(inputElement, true); 
    } 
} 
+0

हां। ब्रूट फोर्स जरूरी प्रतीत होता है :( – Zeek

+0

बीटीडब्ल्यू "राइट क्लिक पॉइंट कुंजी" क्या है? – Zeek

3

उपयोग event.which - प्रत्येक कुंजी का अपना कोड है। नियंत्रण कुंजी 17 है, शिफ्ट कुंजी 16 है, और @ दो अलग-अलग कुंजियां हैं, 16 के बाद 50. उस पृष्ठ पर डेमो का उपयोग यह पता लगाने के लिए करें कि प्रत्येक कुंजी के लिए कौन से मान लौटाए गए हैं या अनदेखा करना चाहते हैं।

1

यह केवल ए-जेड (कोड 65 - 9 0), 0-9 (48 - 57) की अनुमति देगा। ध्यान दें कि shift की अनुमति दी जानी चाहिए, क्योंकि टेक्स्ट को ऊपरी मामले में बदलने के लिए आवश्यक है।

$("...").keydown(function(ev){ 
    var k = ev.which; 
    if(!(k >= 65 && k <= 90) /* a-z */ 
    || !(k >= 48 && k <= 57) /* numbers */ 
    || !(k >= 96 && k <= 111) /* numeric keyboard*/ 
    || k != 59 || k != 61 || k != 188 || k != 190 || k != 191 || k != 191 
    || k != 192 || !(k >= 219 && k <= 222) || k != 32 /* Comma's, etc. */ 
    || ev.ctrlKey || ev.altKey/* || ev.shiftKey*/){ 
     //Filter 
    } 
}) 
+0

कैसे जर्मन umlats तरह यूनिकोड वर्ण के साथ इस सौदे? राजधानियों? – Zeek

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