2016-07-27 3 views
-7

そのシンプルに動作しない場合、ユーザーは6または9にbegginていない番号を入力した場合、彼はエラーを取得します。シンプルジャバスクリプトのcharAtとの声明を

console.log($(this).val().charAt(0)); 

if($(this).val().charAt(0) != 6 || $(this).val().charAt(0) != 9){ 
    x=false; 
    }else { 
    x=true; 
    } 

CONSOLE.LOGが正しく最初の文字が表示されます。それは値が存在することを意味します..

私が6,7または9をタイプしても、私はいつも偽になるでしょう...なぜですか? somevar

somevar!=6 OR somevar!=9 

の値は常に真であるものは何でも

+7

は、OR、ここで約1秒を考えてみてください。 –

+0

Well: '||' = 'OR' :) – eisbehr

+0

6のときはどうなるでしょうか、あなたは' 6!= 6 || 6!= 9'なので、2番目の式は真実で、9と同じです(最初の式は真実になります)。したがって、条件は常にtrueを返します。 –

答えて

1

:ここ

最善の解決策は、おそらく正規表現になります。あなたは今、あなたはこのように、直接xを設定できるよう、あなたもif条件を必要としないことがわかります。そこから

var chr = $(this).val().charAt(0); 
if (chr == '6' || chr == '9') { 
    x = true; 
} else { 
    x = false; 
} 

:これを試してみてください

var chr = $(this).val().charAt(0); 
var x = chr == '6' || chr == '9'; 
3

。あなたは両方の状態はおそらく同時にtrueにすることはできませんので、xは常にfalseに設定されているような論理条件を反転する必要が

var x = /^[69]/.test($(this).val());