0

I am just trying to make a simple calculation with the values of selected options, however I get false result: pickUp 9 and returnTime 10, it gives no (which must be yea)

but pickUp time 11 and returnTime 14, it gives yea(which is right) so it gives the right result with some specific numbers and with some numbers not..

Here is the (pickUp)select options:

<select id="ophalenUur" class="timePicker selectOption">
    <option value="-">Kies Tijd</option>
    <option value="8">08.00</option>
    <option value="8.5">08.30</option>
    <option value="9">09.00</option>
    <option value="9.5">09.30</option>
    <option value="10">10.00</option>
    <option value="10.5">10.30</option>
    <option value="11">11.00</option>
    <option value="11.5">11.30</option>
    <option value="12">12.00</option>
    <option value="12.5">12.30</option>
    <option value="13">13.00</option>
    <option value="13.5">13.30</option>
    <option value="14">14.00</option>
    <option value="14.5">14.30</option>
    <option value="15.">15.00</option>
    <option value="15.5">15.30</option>
    <option value="16">16.00</option>
    <option value="16.5">16.30</option>
    <option value="17">17.00</option>
    <option value="17.5">17.30</option>
    <option value="18">18.00</option>
    <option value="18.5">18.30</option>
    <option value="19">19.00</option>
    <option value="19.5">19.30</option>
    <option value="20">20.00</option>
</select> 

and js:

var pickUp = 0;
var returnTime =0; 

$('#ophalenUur').change(function() {
    pickUp = $('#ophalenUur option:selected').val();
    $('.pickUp').text("PickUp: " + pickUp);
});

$('#inleverenUur').change(function() {
    returnTime = $('#inleverenUur option:selected').val();
    $('.returntime').text("return: " + returnTime);

    if(returnTime > pickUp){ alert("yea");
    } else { alert("no");  }
});

Fiddle: http://jsfiddle.net/jLAaq/27/

What is wrong here? I am looking for hours and I can't see:/

Francois Borgies
  • 2,378
  • 31
  • 38
user2045937
  • 187
  • 1
  • 4
  • 13

3 Answers3

2

because you are doing a string comparison

var pickUp = 0;
var returnTime = 0;
var totalExtra = 0;

$('#ophalenUur').change(function () {
    //conver the value string to number by prfixing it with + or you can use parseFloat(this.value)
    pickUp = +this.value;
    $('.pickUp').text("PickUp: " + pickUp);
});

$('#inleverenUur').change(function () {
    returnTime = +this.value;
    $('.returntime').text("return: " + returnTime);

    if (returnTime > pickUp) {
        alert("yea");
    } else {
        alert("no");
    }
});

Demo: Fiddle

Arun P Johny
  • 384,651
  • 66
  • 527
  • 531
1

I think the reason could be returnTime and pickUp is string. so "9">"10". Try to use parseFloat function to parse returnTime and pickUp.

1

You were comparing the integer as string. You can use the parseFloat method

Demo Link

CODE:

var pickUp = 0;
var returnTime =0; 
var totalExtra = 0;

$('#ophalenUur').change(function() {
pickUp = $('#ophalenUur option:selected').val();
    $('.pickUp').text("PickUp: " + pickUp);
});

$('#inleverenUur').change(function() {
returnTime = $('#inleverenUur option:selected').val();
    $('.returntime').text("return: " + returnTime);
 if(parseFloat(returnTime) > parseFloat(pickUp)){
       alert("yea");
   }else{
    alert("no");           
  }
});
Furquan Khan
  • 1,586
  • 1
  • 15
  • 30