How to use comparison operator in Javascript for two input values

后端 未结 4 1501
梦如初夏
梦如初夏 2021-01-27 04:01

I want to compare the two input values, just try in javascript, but it\'s not working fine. I\'m using the following code

function check_closing()
{
var opening         


        
相关标签:
4条回答
  • 2021-01-27 04:32

    Convert the strings to integers before comparison:

    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('');
        }
    }
    
    0 讨论(0)
  • 2021-01-27 04:36

    The values of input elements are always strings. To compare them as numbers, you must convert them to numbers. You can do that with:

    • parseInt if they're whole numbers and you want to specify the number base and stop parsing at the first non-numeric character

      Example:

      var opening = parseInt($('#opening').val(), 10);
      // This is the number base, usually 10 ---^^^^
      
    • parseFloat if they're decimal fractional numbers

      Example:

      var opening = parseFloat($('#opening').val()); // Always base 10
      
    • The + if you want JavaScript to guess the number base, and give you NaN if there's a non-numeric character

      Example:

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

    ...and a few others.

    0 讨论(0)
  • 2021-01-27 04:36

    First of all you you need to convert the strings into 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('');
        }
    }
    
    0 讨论(0)
  • 2021-01-27 04:38

    You're comparing the strings instead of integers, so you need to convert the strings to integers. Since as strings, '8541' > '8241'

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

    So you want:

    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('');
        }
    }
    

    To add more to why exactly this happened, in case you're interested: Strings are compared character by character, iirc. So the '9' is greater than the '8' but the '8241' is less than '8541' because '2' is less than '5'.

    0 讨论(0)
提交回复
热议问题