2016-07-27 7 views
1

Ich habe diese HTML Eingabe bedingte return-Anweisung anzuwenden:Wie in JavaScript

Rows: <input type="text" class="rows" onkeypress="return isNumber(event)"><br> 

und diese JavaScript-Funktion zu validieren nur Zahlen

function isNumber(evt) { 
    evt = (evt) ? evt : window.event; 
    var charCode = (evt.which) ? evt.which : evt.keyCode; 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) { 
     return false; 
    } 
    return true; 
} 

aber ich mag arbeiten mit Mikro-Verzweigung zu tun etwas wie dieses:

function isNumber(evt){ 
    evt = evt || window.event; 
    var charCode = evt.which || evt.keyCode; 
    (charCode > 31 && (charCode < 48 || charCode > 57)) && return false; 
    return true; 
} 

die Sache ist, dass die letzten 2 Linien nicht arbeiteten.

+0

, was Sie versuchen, in der zweiten letzte Zeile zu tun? es scheint, wenn fehlt aber wieder was ist das && return false .. ist es typo? –

+1

1. das zweite Beispiel ist hässlich. 2. 'return! (CharCode> 31 && (charCode <48 || charCode> 57));' 3. Der '&&' Operand muss ein Ausdruck sein, keine Anweisung – zerkms

+0

@zerkms funktioniert, danke! – imjustaguy

Antwort

3

return ist eine Anweisung und kein Ausdruck und kann daher nicht als Argument für einen logischen Operator verwendet werden. Sie ! verlieren

return !(charCode > 31 && (charCode < 48 || charCode > 57)); 

Oder, wie zerkms notes, von:

In Ihrem Fall jedoch die letzten beiden Zeilen können durch einfaches Umdrehen der Bedingung der if Klausel in einer einzigen return Anweisung neu geschrieben werden Spiegeln die Operatoren (&& < =>|| und < < =>>=), die in meiner bescheidenen Meinung nach, Lesbarkeit erhöht:

return charCode <= 31 || (charCode >= 48 && charCode <= 57); 
+2

Btw, 'return charCode <= 31 || (charCode> = 48 && charCode <= 57); ' – zerkms

1

Nach Ihrer Beschreibung, es sieht aus wie Sie für die bedingte Scheck und Rückkehr suchen:

function isNumber(evt){ 
    evt = evt || window.event; 
    var charCode = evt.which || evt.keyCode; 
    return !(charCode > 31 && (charCode < 48 || charCode > 57)); 
}