如何在Javascript中使用比较运算符作为两个输入值

时间:2014-04-22 07:16:51

标签: javascript

我想比较两个输入值,只是尝试使用javascript,但它没有正常工作。我正在使用以下代码

function check_closing()
{
var opening = $('#opening').val();
var closing = $('#closing').val();
if(opening > closing)
{
    alert('Opening is greater than Closing. Please enter the correct value');
    $('#closing').val('');
}
}

如果开盘价输入= 8541,收盘价如= 8241则工作正常,但如果收盘价为954则无效。请帮忙。

提前致谢。

4 个答案:

答案 0 :(得分:4)

您正在比较字符串而不是整数,因此您需要将字符串转换为整数。因为作为字符串,' 8541' > ' 8241'

>>>'8541' > '8241'
true
>>>'954' > '8241'
true

>>>8541 > 8241
true
>>>954 > 8241
false

所以你想要:

function check_closing()
{
    var opening = parseInt($('#opening').val());
    var closing = parseInt($('#closing').val());
    if(opening > closing)
    {
        alert('Opening is greater than Closing. Please enter the correct value');
        $('#closing').val('');
    }
}

为了更好地解释为什么会发生这种情况,以防你感兴趣:字符串逐字符进行比较,即iirc。所以' 9'大于' 8'但是' 8241'小于' 8541'因为' 2'小于' 5'

答案 1 :(得分:2)

input元素的值始终是字符串。要将它们作为数字进行比较,您必须将它们转换为数字。你可以用:

来做到这一点
  • parseInt如果它们是整数并且您想指定数字基数并停止解析第一个非数字字符

    示例:

    var opening = parseInt($('#opening').val(), 10);
    // This is the number base, usually 10 ---^^^^
    
  • parseFloat如果它们是小数小数

    示例:

    var opening = parseFloat($('#opening').val()); // Always base 10
    
  • +如果您希望JavaScript猜测数字基数,并且如果有非数字字符则会给您NaN

    示例:

    var opening = +$('#opening').val();
    //            ^---- it's hiding here
    

......还有其他一些人。

答案 2 :(得分:1)

首先,您需要将strings转换为integers

function check_closing(){
    var opening = parseInt($('#opening').val(), 10);
    var closing = parseInt($('#closing').val(), 10);
    if(opening > closing){
        alert('Opening is greater than Closing. Please enter the correct value');
        $('#closing').val('');
    }
}

答案 3 :(得分:0)

在比较之前将字符串转换为整数:

function check_closing()
{
    var opening = $('#opening').val();
    var closing = $('#closing').val();
    if(parseInt(opening) > parseInt(closing))
    {
        alert('Opening is greater than Closing. Please enter the correct value');
        $('#closing').val('');
    }
}