2016-07-27 2 views
1

У меня есть этот HTML вход:Как применить условный оператор возврата в JavaScript

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

и это Java-функция для проверки только номер

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; 
} 

, но я хочу работать с микро-ветвления сделать что-то вроде этого:

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

Дело в том, что последние 2 строки не работали.

+0

то, что вы пытаетесь сделать во второй последней строке? кажется, если отсутствует, но опять же что это такое && return false .. это опечатка? –

+1

1. Второй образец уродливый. 2. 'return! (CharCode> 31 && (charCode <48 || charCode> 57));' 3. Оператор '&&' должен быть выражением, а не оператором – zerkms

+0

@zerkms это работает, спасибо! – imjustaguy

ответ

3

return - выражение, а не выражение, и поэтому не может использоваться в качестве аргумента для логического оператора.

В вашем случае, однако, последние две строки могут быть переписаны в одно return заявление, просто перевернув условие к if пункта:

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

Или, как zerkms notes, вы можете потерять ! по листать операторы (&& < =>|| и < < =>>=), которые, по моему скромному мнению, повышает читаемость:

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

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

1

По Вашему описанию, похоже, что вы ищете условную проверку и возврат:

function isNumber(evt){ 
    evt = evt || window.event; 
    var charCode = evt.which || evt.keyCode; 
    return !(charCode > 31 && (charCode < 48 || charCode > 57)); 
} 
Смежные вопросы