2016-06-28 5 views
-1

入力テキストの値を数値に変換できません! JS Number(input.val())また、parseInt(input.val()、10)もunary + input.val()...試してみましたが、それ以下であれば条件文で比較する入力が必要です。JS比較のために値を整数/数値/数値に変換します

私はプラグインjqueryノブを使用しているので、誰でも入力フィールドにテキストタイプが必要です。入力タイプ番号を認識しています。

このような変換を強制する方法はありません。

**アップデート** Myabe私が読んだことを読んでいて、それでもまだ理解できなかったことは、なぜ同じクラスを持つ入力を繰り返していて、this.val()を要素を読み込んだ修正は、その#idで呼び出さなければなりません。私の状況でそれを行うことはできません。 fiddle here

$('.hello').each(function() { 
    var temp = $(this).val(); 
    console.log(+temp + " , " + parseInt(temp, 10) + " , " + temp +" , "+Number(temp)+" ,"+$(this).val()); 
if (!$(this).val() <= 1) { 
    $(this).val(--temp).trigger('change'); 
} 

})。

+1

_「どのような方法で数値に入力されたテキストの値を変換できません!」_あなたはすでに非常に多くのを知っている... – Rayon

+1

あなたはいくつかのコードを提供することはできますか?どこに問題があるのでしょうか? –

+1

右のコードを見てください。あなたの説明を見るだけではうまくいくはずです –

答えて

2

あなたが提供フィドルこのif条件があります。

var temp = $(this).val(); 
if (!$(this).val() <= 1) { 
    $(this).val(--temp).trigger('change'); 
} 

そして実際には、入力の値は、このコードだけ減少しています。しかし、これが効果であるのは事故によるものです。

そのif条件のいくつかの問題があります:あなたが数値を期待しているように見える一方で

  1. val()の結果は、文字列です。接頭辞は+です。 console.logでそれを行いますが、その結果はまったく使用しません。
  2. !<=よりも優先度が高いため、否定(!)は値にのみ適用され、<=式には適用されません。したがって、かっこを使用して<=の優先順位を付けるか、代わりに!演算子を使用しないで>を使用する必要があります。ここで

訂正同じコードです:

var temp = +$(this).val(); 
if (temp > 1) { 
    $(this).val(--temp).trigger('change'); 
} 

コードの効果は同じである:すべての値がデクリメントされ、あなたが入力中に入れている値はすべて20(1よりも大きいので、 、30,40,50)。

Corrected fiddle

+0

これ以上詳細を知りません:)詳細についてはありがたいことに感謝します。優先順位のために丸い括弧で囲んでいることを認識していましたが、この状況では必要ではないと思いました。再度、感謝します。 –

0

Jqueryを使用していますか?あなたは、明示的な変換は必要ありません。

if($("#inp").val() > 5){ 
alert("Greater than 5"); 
}else{ 
alert("Less than 5"); 
} 
+0

私はjqueryを使用していますが、私の問題は同じクラスとnusing $(this).val()の入力を反復することです。ちょうどIDの使用に切り替えることについて読んで、すぐにそれを修正する必要がありますが、後の段階で私は動的に生成された入力を持っているので私は傾ける。 –

関連する問題