入力値から整数値を取得する際に、jQuery にストリッピングの問題があるようです。
私のコード:
// Control the rating input field to only accept numeric values
// -else set the values back to 0
// For the highest value:
$('.dsListItem .firstItem').keyup(function(){
if (isNumber($(this).val()) && $(this).val() < $('.dsListItem .lastItem').val()) {
console.log('FIRST: ' + $(this).val() + ' >>> ' + $('.dsListItem .lastItem').val());
$(this).val($('.dsListItem .lastItem').val());
}
});
// For the lowest value:
$('.dsListItem .lastItem').keyup(function(){
if (isNumber($(this).val()) && $(this).val() > $('.dsListItem .firstItem').val()) {
console.log('LAST: ' + $(this).val() + ' >>> ' + $('.dsListItem .firstItem').val());
$(this).val($('.dsListItem .firstItem').val());
}
});
Safari Inspector は次のように教えてくれます。
ラスト: 11 >>> 10
ラスト: 2 >>> 10
ラスト: 1 >>> 10
0 と 1 のみが有効です。10 が「1」として検証された場合、1 > 1 も渡すべきではありませんが、渡されます。
console.log() の出力に正しい整数が表示される理由がわかりませんが、それを使用して計算すると、10 の get が 1 に変換されます。
($(this).val() * 1) で数値をキャストしてみましたが、何も変わりませんでした。値は有効な数値であることがすでにチェックされています。