2015-12-22 3 views
2

Каков правильный или правильный способ? Я смущен этим. Может кто-то сделать это правильно?x = 600 y = 1000, если x <= y будет false?

3digit <= 4digit является false
4digit <= 3digit является true

вы можете проверить его здесь: JSFiddle

<h2></h2> 
<form id="send" action="#" method="POST"> 
    <input type="text" id="x"><br/> 
    <input type="text" id="y"> 
    <input type="submit"> 
</form> 
$(document).ready(function() { 
    $('#send').submit(function(){ 
     var x = $('#x').val(); 
     var y = $("#y").val(); 
     if (x <= y) { 
      $('h2').html("Done."); 
     } else { 
      $('h2').html("Sorry,not enough cash."); 
     } 
     event.preventDefault(); 
    }); 
}); 
+3

'event' отсутствует в' функции() '. Это 'function (event)' –

ответ

5

Преобразовать его в целое число, прежде чем делать что-нибудь, так как он сортирует/сравнивает в виде строки или что-то еще, где "600" становится больше "1000":

var x = parseInt($('#x').val(), 10); 
var y = parseInt($("#y").val(), 10); 

Рабочая Fiddle: https://jsfiddle.net/h60fva4p/

+1

Я просто выберу того, кто является самым быстрым ответом, потому что двое из вас правы, praveen -10: 20: 35 rory - 10:20:37. слишком близко hahah :) Я надеюсь, что это справедливо для вас обоих :) – Jayrex

+0

@Jayrex Большое вам спасибо. –

8

Вы должны преобразовать значения в целые числа. На данный момент вы сравниваете строки. Также обратите внимание, что вам нужно позвонить preventDefault() на event, который передан функции обработчика. Попробуйте это:

$('#send').submit(function(e) { // the 'e' parameter is the event 
    e.preventDefault(); 
    var x = parseInt($('#x').val(), 10); 
    var y = parseInt($("#y").val(), 10); 
    $('h2').html(x <= y ? "Done." : "Sorry, not enough cash."); 
}); 
+1

Я просто выберу того, кто самый быстрый ответ, потому что двое из вас правы, правеен -10: 20: 35 раз - 10:20:37. слишком близко hahah :) Я надеюсь, что это справедливо для вас обоих :) – Jayrex

+1

Это прекрасно, хотя я исправил вашу проблему с событием;) –

+1

@Jayrex ваш комментарий потрясающий .. очень честный u r – Butterfly

3

Пожалуйста, используйте ParseInt для обоих значений:

var x = parseInt($('#x').val(), 10); 
var y = parseInt($("#y").val(), 10); 
2

использование parseInt

var x = parseInt($('#x').val()); 
var y = parseInt($("#y").val()); 

Если вы ожидаете десятичные значения на данном входе вы можете использовать parseFloat() также.

+0

'parseInt ('0x10') === 16', помните redix – andlrc

2

Использование Number преобразовать в число

var x = Number($('#x').val()); 
var y = Number($("#y").val()); 
+1

Лучше, чем parseInt, так как если бы пользователи получили десятичное число, parseInt преобразует его в ближайшее целое. – Bardo

+0

Счастливое кодирование :) – Sujithrao

2

$(document).ready(function() { 
 
     $('#send').submit(function() { 
 
      var x = $('#x').val(); 
 
      var y = $("#y").val(); 
 
      if (parseInt(x) <= parseInt(y)) { 
 
       $('h2').html("Done."); 
 
      } 
 
      else { 
 
       $('h2').html("Sorry,not enough cash."); 
 
      } 
 
      event.preventDefault(); 
 
     }); 
 
    });

Смежные вопросы