jQuery 获取文本作为数字并打印结果

jQuery get text as number and print result

我的代码不起作用

    function compute() {
    if ( $('option[name=oage]:checked').val() != undefined ) {
        var a = $('input[name=odeliv]').val();
        var b = $('select[name=oage]').val();
        var c = $('select[name=otime]').val();

        var total = (b * c) + a;
        $('#result').val(total);
    }
}

$('select[name=oage]').change(compute);
$('input[name=odeliv]').change(compute);
$('select[name=otime]').change(compute);

需要计算服务总价(var total

Fiddle

尝试此代码已完成更改

function compute() {
    if ( $('option[name=oage]:checked').val() != undefined ) {
        var a = parseInt($("select[name='oage'] option:selected").val());
        var b = parseInt($("input[name*='odeliv']:checked").val());
        var c = parseInt($("select[name='otime'] option:selected").val());
        var total = (b * c) + a;

        $('#result').val(total);
    }
}

$('select[name=oage]').change(compute);
$('input[name=odeliv]').change(compute);
$('select[name=otime]').change(compute)
compute();
<form method="POST" action="http://strahovka.cz/secure/payment.php" id="preprice">
  <div class="vc_col-sm-4"><label for="otime"><h3>Срок страхования</h3></label>
    <select name="otime">
      <option name="otime" id="otime" value="1">3 месяцев</option>
      <option name="otime" id="otime" value="2">6 месяцев</option>
      <option name="otime" id="otime" value="4">12 месяцев</option>
      <option name="otime" id="otime" value="8">24 месяца</option>
    </select>
  </div>
  <div class="vc_col-sm-3"><label for="oage"><h3>Возраст</h3></label>
    <select name="oage">
      <option name="oage" id="oage" value="3600">0-5 лет</option>
      <option name="oage" id="oage" value="1600">6-14 лет</option>
      <option name="oage" id="oage" value="1200">15-30 лет (студенты)</option>
      <option name="oage" id="oage" value="1600">31-60 лет</option>
    </select>
  </div>
  <div class="vc_col-sm-3"><label for="odeliv"><h3>Тип доставки</h3></label>
    <input name="odeliv" id="odeliv" value="0" type="radio" checked> Бесплатно в Праге<br/>
    <input name="odeliv" id="odeliv" value="0" type="radio"> Забарать в офисе<br/>
    <input name="odeliv" id="odeliv" value="55" type="radio"> Заказное письмо по Чехии<br/>
    <input name="odeliv" id="odeliv" value="155" type="radio"> Заказное международное письмо<br/>
  </div>
  <div class="vc_col-sm-4"><label for="qoupon"><h3>Итоговая стоимость</h3></label>
    <input value="0" id="result" name="result" type="text" disabled="disabled" />
  </div>

  <div class="vc_col-sm-10">
    <div class="vc_col-sm-5" style="text-align: center;"><div class="row"><input value="Оформить страховку на себя" type="submit" /></div></div>
    <div class="vc_col-sm-5" style="text-align: center;"><div class="row"><input value="Оформить страховку на друга" type="submit" /></div></div>
  </div>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

有一些错误:

更改:if ( $('option[name=oage]:checked').val() != undefined ) {

收件人:如果 ( $('select[name="oage"] option:checked').val() != undefined ) {

变化:$('input[name=odeliv]').变化(计算);

收件人:$('input[name="odeliv"]').on('input', 计算);

为了将文本转换为数字,您可以在 val() 之前添加一个 + 号:

+$('input[name=odeliv]').val();

片段:

function compute() {
  if ( $('select[name="oage"] option:checked').val() != undefined ) {
    var a = +$('input[name=odeliv]').val();
    var b = +$('select[name=oage]').val();
    var c = +$('select[name=otime]').val();

    var total = (b * c) + a;
    $('#result').val(total);
  }
}
$(function () {
  $('select[name="oage"]').on('change', compute);
  $('input[name="odeliv"]').on('input', compute);
  $('select[name="otime"]').on('change', compute);
  $('input[name="odeliv"]').trigger('input');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form>
    <select name="oage">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
    </select>
    <input name="odeliv" type="number" value="1">
    <select name="otime">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
    </select>
    <input name="result" id="result" type="number" value="">
</form>

var total = (parseInt(b) * parseInt(c)) + parseInt(a);