2017-07-03 4 views
1

Ich habe Probleme bei der Vermeidung der Sonderzeichen (Alt + Zahl von Bloq. Num -> ☺☻ ♦ ♦ ♣ • • ○) in einem Eingang.Prevent Tastendruck, wenn Alt-Taste Plus-Nummer von Bloq-Nummer gedrückt wird

ist mein Eingang wie folgt erklärt:

<html:text styleId="inputMaxVol" styleClass="numeric"/> 

Dies ist auf meinem onReady

$(".numeric").keydown(function(event) { 
    return maskNumber(); 
}); 

Und hier ist, wo ich versuche, den Job (ohne Erfolg) zu tun

function maskNumber() { 
    if (event) { 
    var charCode = (event.which)? event.which : event.keyCode; 
    console.log(charCode); 
    // If not a number 
    if ((charCode < 47 || charCode > 58) && (charCode < 95 || charCode > 105)) { 
     console.log("not a number"); 
     return false; 
    } else if (event.altKey) { 
     //No special characters admitted 
     console.log("Alt pressed"); 
     return false; 
    } 
    } else { 
    return false; 
    } 
} 

Wenn ich Alt + 1 (Taste "1" vom Ziffernblock) drücke, erscheint das weiße Smiley-Gesicht und in meinem Protokoll erscheint etwas l Ike, dass

18 
not a number 
97 
Alt pressed 

Ich habe auch mit der event.preventDefault() ohne Erfolg versucht. Irgendeine Idee über wo ist mein Problem?

Danke, ich schätze wirklich jede Hilfe, die Sie zur Verfügung stellen können.

UPDATE: Wie in den Kommentaren erklärt die Lösung kommt dem Ereignis KeyDown für keypress ändern und die charCode comparation Zahlen zu wechseln (Jetzt ist nur, wenn (charCode < 48 || charCode > 57) aufgrund der zurückgegebenen Zahlen haben sich verändert

So ist die. Lösung ist als

$(".numeric").keypress(function(event) { 
    return maskNumber(); 
}); 

function maskNumber() { 
    if (event) { 
     var charCode = (event.which)? event.which : event.keyCode;   
     // If not a number 
     if (charCode < 48 || charCode > 57) {      
      return false; 
     }    
    } else { 
    return false; 
    } 
} 

so einfach ist das folgt!

+0

versuchen, diese Bibliothek: https: // github.com/tzuryby/jquery.hotkeys – brijrajsinh

Antwort

0

falsche Rückkehr wird das Ereignis nicht deaktiviert werden. Sie müssen Tun Sie eine event.preventDefault(), die verhindert, dass das Ereignis eintritt, anstatt false zurückzugeben.

event.preventDefault(); 

Die return false arbeitet für eine onbeforesubmit Ereignis eines Formulars.

+0

Wie Sie in meinem ersten Beitrag sehen können, habe ich das bereits versucht, aber das Zeichen wird auch angezeigt :( – Ivan

+0

Haben Sie die 'event.preventDefault()' in th e 'onkeydown'? $ ("numerisch".) Keydown (function (event) { if (maskNumber()) { Ereignis .preventDefault();! } }). –

+0

Ja, sogar mit nur \t '$ (". Numeric "). Keydown (function (event) {event.preventDefault();});' ein beliebiges Zeichen wird eingegeben, außer den Sonderzeichen mit der Alt-Taste [☺☻ ♥ ♦ ♣ ♠ • ◘ ○] – Ivan

3

Try Code unten wird es auf jedem Browser funktionieren oder wenn Sie Bibliothek verwenden möchten, dann besuchen Sie diesen Link: https://github.com/tzuryby/jquery.hotkeys

$("#txtmy").keypress(function(event) { 
 
    if (event.which.toString().length > 3) { 
 
    event.preventDefault(); 
 
    return; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="txtmy"/>

Verwandte Themen