Ниже приведены мои инструменты расчета javascript, где вы можете показать процент от значения. Итак, если значение равно 100 долларам, а процент - 10%, то это будет 10 долларов. После этого я просто добавил новое поле под названием «Другие сборы», поэтому окончательный результат будет равен 20 долларам США (если другие сборы составят 10 долларов США). Но результата не получается.

Часть Javascript:

<script type="text/javascript">
function incrementValue()
{
    var value = parseInt(document.getElementById('pvalue1').value, 10);
    value = isNaN(value) ? 0 : value;
    value +=10000
    document.getElementById('pvalue1').value = value;
}

function decrementValue()
{
    var value = parseInt(document.getElementById('pvalue1').value, 10);
    value = isNaN(value) ? 0 : value;
    value -=10000
    document.getElementById('pvalue1').value = value;
}

function incrementValueO()
{
    var value = parseInt(document.getElementById('otherFees').value, 10);
    value = isNaN(value) ? 0 : value;
    value +=10000
    document.getElementById('otherFees').value = value;
}

function decrementValueO()
{
    var value = parseInt(document.getElementById('otherFees').value, 10);
    value = isNaN(value) ? 0 : value;
    value -=10000
    document.getElementById('otherFees').value = value;
}


function toggleIncrement()
{
    var value = parseFloat(document.getElementById('pvalue2').value, 10);
    value = isNaN(value) ? 0 : value;
    value +=0.1
    value = parseFloat(value).toFixed(2)
    document.getElementById('pvalue2').value = value;
     $('#pvalue1').trigger("change");
}

function toggleDecrement()
{
    var value = parseFloat(document.getElementById('pvalue2').value, 10);
    value = isNaN(value) ? 0 : value;
    value -=0.1
    value = parseFloat(value).toFixed(2)
    document.getElementById('pvalue2').value = value;
     $('#pvalue1').trigger("change");
}

jQuery(document).ready(function(){
 $('#pvalue1').change(function(){
 var agentfee = parseFloat($('#pvalue1').val(), 10) * parseFloat($('#pvalue2').val(), 10) / 100; 
 var otherFees = parseFloat(document.getElementById('otherFees').value);
 var totalOtherFees = agentfee + otherFees;
 $('#pvalue3').val(totalOtherFees);

 var percentagereduce = parseFloat($('#pvalue2').val(), 10) - 0.1;
 var newvalue = parseFloat($('#pvalue1').val(), 10) * percentagereduce / 100; 
 $('#pvalue4').val(newvalue);         
 var takevalue1 = parseFloat($('#pvalue3').val(), 10);
 var takevalue2 = parseFloat($('#pvalue4').val(), 10);
 var finalvalue = takevalue1 - takevalue2;
 var finalvalue = parseFloat(finalvalue).toFixed(2)
 $('#pvalue5').val(finalvalue);
});

  $('#pvalue2').change(function(){


 var agentfee = parseFloat($('#pvalue1').val(), 10) * parseFloat($('#pvalue2').val(), 10) / 100; 
 $('#pvalue3').val(agentfee);

 var percentagereduce = parseFloat($('#pvalue2').val(), 10) - 0.1;
 var newvalue = parseFloat($('#pvalue1').val(), 10) * percentagereduce / 100; 
 $('#pvalue4').val(newvalue);         
 var takevalue1 = parseFloat($('#pvalue3').val(), 10);
 var takevalue2 = parseFloat($('#pvalue4').val(), 10);
 var finalvalue = takevalue1 - takevalue2;

 $('#pvalue5').val(finalvalue);    
});   
});   
</script>

HTML-часть:

<table border="0" cellpadding="5">
<tr>
    <td>House Sale Price:</td>
    <td>$</td>
    <td><input name="pvalue1" class="form-control"  onkeypress="validate(event)" placeholder=" Enter Sale Price" type="number" value="<?=$pvalue1?>" id="pvalue1" size="20" required ></td>
    <td><input type="button" onClick="incrementValue()" value="+" /><input type="button" onClick="decrementValue()" value="-" /> </td>
</tr>
<tr>
    <td>Rate quoted by agent:</td>
    <td>%</td>
    <td><input name="pvalue2"  class="form-control" onkeypress="validate(event)" placeholder=" Percentage" type="number" value="<?=$pvalue2?>" id="pvalue2" size="20"  required ></td>
    <td><input type="button" onClick="toggleIncrement()" value="+" /><input type="button" onClick="toggleDecrement()" value="-" /></td>
</tr>
<tr>
    <td>Other Fees</td>
    <td>$</td>
    <td><input name="otherFees" class="form-control"  onkeypress="validate(event)" placeholder=" Enter Sale Price" type="number" value="<?=$pvalue1?>" id="otherFees" size="20" required ></td>
    <td><input type="button" onClick="incrementValueO()" value="+" /><input type="button" onClick="decrementValueO()" value="-" /> </td>
</tr>

</table>                                                                                                                                                                                                                   
 <input name="doRegister" type="submit" id="doRegister" value="Calculate" style="color:white;font-size:20px;" class="btn btn-primary">

<br><br>
<h2>Results</h2>
<table>
<tr>
<td>Agent Fees:</td>
<td>$</td>
<td><input name="pvalue3"  onkeypress="validate(event)"  class="form-control"  placeholder="" type="number" value="<?=$pvalue3?>" id="pvalue3" size="10" class="resultfield"  ></td></tr>
<tr>
<td></td>
<td><span id='show-me'  class="form-control" style='display:none'><input name="pvalue4" placeholder="" type="number" value="<?=$pvalue4?>" id="pvalue4" size="10" class="resultfield"  ></span></td></tr>
<tr>
<td>Reducing the rate the agent is charging by 0.1% will save you: </td>
<td>$</td>
<td><input name="pvalue5"   onkeypress="validate(event)" class="form-control"  placeholder="" type="number" value="<?=$pvalue5?>" id="pvalue5" size="10" class="resultfield"  ></td>
</tr>
</table>
0
Babu 10 Фев 2014 в 11:55
1
«Но не могу получить результат» - не могли бы вы подробнее объяснить, в чем проблема? Я предполагаю, что в вашем коде javascript есть ошибка (если ваши значения представляют собой строки типа «10 долларов США», они не являются числами)? Или проблема где-то еще?
 – 
Krease
10 Фев 2014 в 12:00
Сейчас расчет идет без поля «прочие комиссии». Я только что добавил это новое поле. Если вы введете 100 и 10%, то результат будет равен 10. Хорошо, но я хочу добавить другое значение поля. так что результат будет (Агентские сборы + прочие сборы)
 – 
Babu
10 Фев 2014 в 12:03
Так что, если я правильно понял, проблема с otherFees? Я вижу, что он используется здесь: document.getElementById('otherFees').value - вот в чем проблема? Что это возвращает?
 – 
Krease
10 Фев 2014 в 12:10
Да. Думаю, в этом проблема .. это возвращение Нан
 – 
Babu
10 Фев 2014 в 12:12
Возможно, это будет NaN после вызова parseFloat, но если до этого будет NaN, тогда возникнет совершенно другая проблема ...
 – 
Krease
10 Фев 2014 в 12:14

1 ответ

Лучший ответ

Вы не написали функцию изменения для otherFee, это может выглядеть следующим образом и будет включено в функцию готовности.

 $('#otherFees').change(function(){
 var agentfee = parseFloat($('#pvalue1').val(), 10) * parseFloat($('#pvalue2').val(), 10) / 100; 
 var otherFees = parseFloat(document.getElementById('otherFees').value);
 var totalOtherFees = agentfee + otherFees;
 $('#pvalue3').val(totalOtherFees);

 var percentagereduce = parseFloat($('#pvalue2').val(), 10) - 0.1;
 var newvalue = parseFloat($('#pvalue1').val(), 10) * percentagereduce / 100; 
 $('#pvalue4').val(newvalue);         

 var takevalue1 = parseFloat($('#pvalue3').val(), 10);
 var takevalue2 = parseFloat($('#pvalue4').val(), 10);
 var finalvalue = takevalue1 - takevalue2;
 var finalvalue = parseFloat(finalvalue).toFixed(2)
 $('#pvalue5').val(finalvalue);   
});
0
Dipali Vasani 10 Фев 2014 в 12:28
Результат не отображается ... Можете показать мне в jsfiddle?
 – 
Babu
10 Фев 2014 в 12:33
Вам нужно добавить данные и проверить, работает ли он. Я ввел значение и убедился, что оно работает
 – 
Dipali Vasani
10 Фев 2014 в 12:42
Или укажите ваше точное требование. ! он показывает значение 20 для 100, 10, 10.
 – 
Dipali Vasani
10 Фев 2014 в 12:43
В вашем примере кнопка +/- не работает. Ты знаешь почему ?
 – 
Babu
10 Фев 2014 в 13:07
Теперь проверьте, что он работает. была небольшая проблема: скрипт не вызывался для увеличения / уменьшения.
 – 
Dipali Vasani
10 Фев 2014 в 13:13