0

从输入值中检索整数值时,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) 转换数字,但这并没有改变任何东西,无论如何;该值已被检查为有效的数值。

4

1 回答 1

1

如果您确定您使用的是数值,那么您必须使用 parseInt 转换它们,因此您可以确定 Javascript 也将与数字进行对话,而不是将数字与字符串进行比较!

我认为使用 parseInt 进行强制转换比通过 *1 指令进行强制转换...

于 2013-02-11T16:43:19.767 回答