2010-05-18 13 views
9

इम, jQuery का उपयोग कर मैं कहाँ एक regex पैटर्न पूर्व के खिलाफ इनपुट सामग्री की जांच करना चाहिए जावास्क्रिप्ट में कुछ तर्क लेखन:जावास्क्रिप्ट कीकोड 46 DEL फंक्शन कुंजी या (।) अवधि चिह्न है?

"^[a-zA-Z0-9_]*$" //Alpha-numeric and _ 

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

var FunctionsKey = new Array(8, 9, 13, 16, 35, 36, 37, 39, 46); 

function keypressValidation(key) { 
      if (config.regexExp != null) { 
       if ($.inArray(key, FunctionsKey) != -1) { 
        return true; 
       } 
       else { 
        var keyChar = String.fromCharCode(key); 
        return RegexCheck(keyChar); 
       } 
      } 
      return true; 
     } 

तो कीकोड सरणी में उन में से एक है, मैं इसे पारित, नहीं तो मैं चार हो जाते हैं और यह REGEX के खिलाफ की तुलना करें। समस्या यह है: कुछ ब्राउज़रों में DEL और '।' (अवधि चिह्न) में एक ही कुंजी कोड 46 है।

तो फ़ंक्शन कुंजियों को फ़िल्टर करने के लिए एक बेहतर तर्क है या मुझे उस मामले के लिए एक शर्त लिखनी चाहिए, शायद सरणी से 46 को हटा दें और इसे चार में परिवर्तित करने का प्रयास करें और यदि है (।) इसे रेगेक्स फ़ंक्शन पर जाने दें यदि इसे पास न करें? अन्य प्रश्न कुछ ब्राउज़रों में और अधिक साझा कुंजी कोड होंगे?

संपादित करें: मेरे द्वारा सुझाए गए समाधान अभ्यस्त काम है क्योंकि यह कोई फर्क नहीं पड़ता उपयोगकर्ता दबाया (डेल या अवधि) मैं हमेशा कम से कम ओपेरा और एफएफ = (

उत्तर

9

110 पर CHAR के रूप में है जो कुंजी (।)। दशमलव कुंजी कोड, 46 डेल कुंजी है कुछ मज़ा के लिए

:। आप क्या हिट देखने के लिए इस में डाल संपादित करें: एक केंद्रित घटना जोड़ा

/* handle special key press */ 
$(document).ready(function() { 
    function checkAKey(e) { 
    var shouldBubble = true; 
    switch (e.keyCode) { 
     // user pressed the Tab 
     case 9: 
     { 
      alert("Tab hit, no bubble"); 
      shouldBubble = false; 
      break; 
     }; 
     // user pressed the Enter  
     case 13: 
     { 
      alert("Enter"); 
      break; 
     }; 
     // user pressed the ESC 
     case 27: 
     { 
      alert("Escape"); 
      break; 
     }; 
    }; 
    /* this propogates the jQuery event if true */ 
    return shouldBubble; 
    }; 

    $("*").keydown(function(e) { 
    return checkAKey(e); 

    }); 
}); 

या

$(document).ready(function() { 
    /* handle special key press */ 
    function checkFieldKey(e, me) { 
    var shouldBubble = true; 
    switch (e.keyCode) { 
     // user pressed the Enter 
     case 13: 
     { 
      $(me).blur(); 
      $("#somewhereElse").focus(); 
      shouldBubble = false; 
      break; 
     }; 
    }; 
    /* this propogates the jQuery event if true */ 
    return shouldBubble; 
    }; 
    /* user pressed special keys while in Selector */ 
    $("#myField").keydown(function(e) { 
    return checkFieldKey(e, $(this)); 
    }); 
}); 
+0

मैं इसे आज़मा दूंगा, thx – JOBG

+0

नोट: दो '।' कई कीबोर्ड पर कुंजी, दोनों को आजमाएं, (ऐसा लगता है कि अगर मुझे मृत मस्तिष्क कोशिकाओं से सही याद है तो ऐसा लगता है कि यह एक दशमलव हो सकता है :) आप एक चेतावनी() जोड़ सकते हैं; बिल्कुल –

+0

ठीक से पता लगाने के लिए, सबसे पहले मुझे पता है कि आप कीप्रेस के बजाए कीडडाउन का उपयोग करते हैं, और ऐसा लगता है कि मेरे द्वारा चुने गए ईवेंट में एक अंतर है, वर्तमान में मैं कुंजीपटल का उपयोग कर रहा हूं और विधि के साथ परिणाम (।) = 0 (एफएफ) - 46 (ओप्र), डीएल = 46 दूसरी ओर कीडाउन (।) = 190, DEL = 46 दोनों ब्राउज़रों के लिए, अंतर क्यों? – JOBG

6

कीपैड पर दशमलव या डॉट कुंजी कोड 190 है .. numpad पर दशमलव 110 है।

चीयर्स .. !!

+0

दूसरा जो मुझे हर समय प्राप्त करता है वह है '-' * (18 9) * और' -' * (109) * – Abela

3

@Mark Schultheiss ' जवाब वास्तव में अच्छा है, मैं इसे करने के लिए कुछ और जोड़ देंगे: जब आप (इनपुट तत्व बाहर कीबोर्ड पर डेल बटन पुश करने के लिए जब एक पाठ क्षेत्र फोकस खो देता है वह यह है कि जरूरत है) आपको इसे रोकना होगा। यह बहुत की तरह किया जा सकता है:

$("#selector-for-a-textbox, body").keydown(function(event){ 
    if(event.keyCode==46){ 
    // do something here 
    } 
}); 
2

अंतर है: कुंजी दबाने पर "हटाएँ" कुंजी और "।" कुंजी कुंजीकोड 46 देता है।

तो कुंजीपटल या कुंजी डाउन पर कोड लिखें, फिर "हटाएं" कुंजी अच्छी तरह से काम करती है।

http://javascript.info/tutorial/keyboard-events

गलत कोड की जांच करने के

window.addEventListener("keypress", dealWithKeyboard, false); 

राइट कोड:

window.addEventListener("keydown", dealWithKeyboard, false); 

अंतिम कोड

window.addEventListener("keydown", dealWithKeyboard, false); 
function dealWithKeyboard(e) { // CHECK KEYPRESS EVENT 
     if(e.keyCode ==46){ 
      delete_object();} 
     } 

अपने मेरे लिए अच्छी तरह से काम कर रहे।

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