2014-10-03 2 views
1

У меня есть калькулятор базовых расходов, который я хочу автоматически добавлять значения, поскольку числа вводятся в текстовые поля. Это отлично работает в Chrome, но по какой-то причине только в хром. Моя цель состоит в том, чтобы новые математические результаты отображались после знака доллара, когда число вводилось в текстовое поле. Я не получаю никаких консольных ошибок, и JS Hint/Lint выглядят хорошо.Jquery keyup работает только в Chrome?

Любые идеи, почему это работает в хроме, но не где?

Вот скрипка: http://jsfiddle.net/Egreg87/j7r4zte8/4/

window.onload = function() { 


$('input').keyup(function(){ // run anytime the value changes 

    var duration = parseFloat($('#duration').val()) || 0; // get value of field 
    var timeHr = parseFloat($('#timeHr').val()) || 0; // get value of field 
    var distance = parseFloat($('#distance').val()) || 0; // get value of field 
    var flight = parseFloat($('#flight').val()) || 0; // convert it to a float 
    var parkDays = parseFloat($('#parkDays').val()) || 0; 
    var parking = '12.00'; 
    var fuelCost= '3.50'; 

    $('#added').html(flight + parkDays * parking + distance * (2)/(20) * fuelCost + timeHr); // add them and output it 

    }); 

$('input').keyup(function(){ // run anytime the value changes 

    var distance1 = parseFloat($('#distance1').val()) || 0; // get value of field 
    var flight1 = parseFloat($('#flight1').val()) || 0; // convert it to a float 
    var parkDays = parseFloat($('#parkDays').val()) || 0; 
    var parking1 = '12.00'; 
    var fuelCost1= '3.50'; 

    $('#added1').html(flight1 + parkDays * parking1 + distance1 * (2)/(20) * fuelCost1); // add them and output it 

    }); 

$('input').keyup(function(){ // run anytime the value changes 

    var duration2 = parseFloat($('#duration2').val()) || 0; // get value of field 
    var timeHr = parseFloat($('#timeHr').val()) || 0; // get value of field 
    var distance2 = parseFloat($('#distance2').val()) || 0; // get value of field 
    var flight2 = parseFloat($('#flight2').val()) || 0; // convert it to a float 
    var parkDays = parseFloat($('#parkDays').val()) || 0; 
    var parking2 = '12.00'; 
    var fuelCost2= '3.50'; 

    $('#added2').html(flight2 + parkDays * parking2 + distance2 * (2)/(20) * fuelCost2); // add them and output it 

}); 




<!--Caclulator fields--> 

<div id="calc-fields"> 
<div> 
<label class="main3">MGM</label><br> 
<label>Total Cost of Your Flight(s) from MGM $:</label> 
<input name="numeric" class="allownumericwithdecimal" id="flight"></input><br /> 

<label for="distance">Distance (miles): </label> 
<input type="text" class="number" name="distance" id="distance"></input> 
<label for="duration">Drive Time (minutes): </label> 
<input type="text" name="duration" id="duration" class="drive-time"></input> 


<label class="main">Total Cost from MGM: <br>$</label> 
<span id="added" class="main2"></span><br /> 



</div> 

<div> 
<label class="main3">ATL</label><br> 
<label>Total Cost of Your Flight(s) from ATL $:</label> 
<input name="numeric" class="allownumericwithdecimal" id="flight1"></input><br /> 
<label for="distance1">Distance (miles): </label> 
<input type="text" name="distance1" id="distance1"></input> 
<label for="duration1">Drive Time (minutes): </label> 
<input type="text" name="duration1" id="duration1" class="drive-time"></input> 




<label class="main">Total Cost from ATL:<br> $</label> 
<span id="added1" class="main2"></span><br /> 

</div> 

<div> 
<label class="main3">BHM</label><br> 
<label>Total Cost of Your Flight(s) from BHM $:</label> 
<input name="numeric" class="allownumericwithdecimal" id="flight2"></input><br /> 
<label for="distance2">Distance (miles): </label> 
<input type="text" name="distance2" id="distance2"></input> 
<label for="duration">Drive Time (minutes):</label> 
<input type="text" name="duration2" id="duration2" class="drive-time"></input> 


<label class="main">Total Cost from BHM: <br>$</label> 
<span id="added2" class="main2"></span><br /> 


</div> 

<br> 
<hr></hr> 



     <!--End calc fields--> 
+0

Это не работает для меня в Chrome. Код в вашей скрипте не совпадает с вопросом, он использует '$ ('input'). Bind ('propertychange input paste', ...)', а не '$ ('input'). Keyup (. ..) '. – Barmar

+0

Ваша скрипка также не будет работать в Chrome, так как у вас есть 'window.onload = ...' и опция 'onLoad' слева. Если вы исправите это, то, похоже, также работает с FF. –

+1

Ваша скрипка не работает в Chrome, ни в Firefox - если я изменю вашу скрипку - на «no wrap» - в это работает: http://jsfiddle.net/j7r4zte8/2/ –

ответ

0

Пар вещей: изменен документ готов. Вы определяли функцию calc1, поскольку вы передавали ее в качестве обратного вызова, меняли на анонимную функцию. Вместо на .keyup изменено на («») KeyUp Если взять время, чтобы посмотреть на ошибки консоли, такие вещи, как это никогда не будет проблемой для вас .. Ниже фиксировано jsfiddle http://jsfiddle.net/j7r4zte8/7/

$('input').on('keyup', function(){ //vs $('input').keyup(function calc1() 
+0

Спасибо, вы сохранили мои выходные. Я извиняюсь, что у меня была неправильная версия скрипта, перечисленная в сообщении, это был тот, с которым я играл. Вот почему там были некоторые странности. В конечном итоге то, что в итоге оказалось решением, заключалось в том, что мне нужно было изменить загрузчик JQuery на $ (function() {} вместо window.onload = function() {} После того, как я изменил его работу в IE. собираюсь попытаться исследовать, почему это так. – Erika

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