【问题标题】:submitting and calculating提交和计算
【发布时间】:2012-06-26 09:55:00
【问题描述】:

HTML

`

 <fieldset id="persoon">
  <legend>mijn gegevens</legend>
 <table>



<tbody><tr>
 <td>
  <label for="bg">Auto gebruik   1 op</label>
  </td>
  <td>
   <input id="bg" name="bg" size="30" type="number" placeholder="Benzine gebruik?">
  </td>
 </tr>

<tr>
  <td>
   <label for="kilometer">kilometer per jaar</label>
   </td>
   <td>
     <input id="kilometer" z="" name="kilometer" size="30" type="number" placeholder="ex: 120000 km/pj">
    </td>
  </tr>
  <tr>
      <td>
    <label for="benzine">prijs benzine </label>
    </td>
    <td>
    <input id="benzine" name="benzine" size="30" type="number">
    </td>
  </tr>
  <tr>
  <td>
  <input id="submit" type="submit" value="bereken"> </td><td>
  </td></tr>
  <tr>
      <td>
    <label for="berekening">Besparing </label>
    </td>
    <td>
    <input id="berekening" name="berekening" size="30" type="number">
    </td>
  </tr>

`

Javascript/Jquery

$('#submit').click(function(evt) {
evt.preventDefault(); // this will prevent the form from being submitted
var bg = parseFloat($('#bg').val());  // parseFloat for floating point
var bf = parseFloat($('#kilometer').val());
var bd = $('bf').val($('bf').val() + $('bf').val() / bg);
var bz = parseFloat($('#benzine').val());
var total = bz * bd ;
total = total.toFixed(2);

});

好吧,我想要完成的是有人填写表格:

  1: howmany kilometers on 1 liter gas
  2: howmany kilometers you drive a year
  3: howmuch the gas costs
         submit
  4:calculation

有人输入他们的东西后,你按“bereken”,它应该计算所有内容并将其放在“besparing”输入字段中,但它不起作用,我找不到任何人来帮助我。

我对此很陌生

【问题讨论】:

    标签: jquery forms submit field


    【解决方案1】:

    使用输入类型按钮而不是输入类型提交。 Submit 用于提交表单。

    而不是让 .submit 在你的 jquery 中使用 .click

    编辑:此外,从 html 输入中检索值的代码需要在函数中,否则 javascript 中的这些值将不会更新。

    伪代码

    1. Create function which is call on click using javascript .click function
    2. Add in code that retreieves values from fields inside this click function
    3. Calculate
    4. Output result
    

    这一切都应该在一个函数中完成。

    【讨论】:

    • 我更改了它,但它没有刷新,也不再给我错误发布请求,但我从未使用过 .submit,它是 .click
    • 是的,但是您使用的提交输入类型只能在表单中使用。您不需要任何模糊功能。重新发布您的代码或粘贴新代码的链接将很有用,这样我们就可以看到您做了什么。
    【解决方案2】:

    你可以这样做:

    $('#submit').click(function(evt) {
       evt.preventDefault(); // this will prevent the form from being submitted
       // your calculations here
    });
    

    无需更新 .blur(),您可以在 click 函数中完成所有操作 - 这样您就不会不必要地使用变量填充全局命名空间

    我不确定你的计算是否正确 - 你可能想检查 .val() 是否返回一个数字......看看 parseFloatparseInt

    var bg = $('#bg').val();
    

    应该是

    var bg = parseFloat($('#bg').val());  // parseFloat for floating point
    

    这个

    var bd = $('#bf').val(+$('bf').val() / bg);
    

    不会工作 - 你需要做类似的事情

    var bd = $('#bf').val($('#bf').val() + $('bf').val() / bg);
    

    我建议您首先获取所有值

    var bd = parseFloat($('#bf').val());
    var km = parseFloat($('#kilometer').val());
    var bf = parseFloat($('#bf').val());
    var bg = parseFloat($('#bg').val());
    

    然后用变量来计算(例如)

    var total = bd + km;
    

    【讨论】:

    • 这是不正确的,因为他没有使用表单。他应该使用输入类型按钮并使用点击绑定而不是提交
    • 我相信你的话,我一直被教导输入类型提交表单,否则输入类型按钮。我真的看不出有任何理由在表单之外使用提交输入。
    • @JonTaylor 我想页面上有一个 &lt;form&gt; 标记 - 因为上面有 input 元素 - OP 发布的 HTML 不完整(因为它缺少bf 字段开始).. 我个人总是使用锚点 a 来触发不在表单中的操作 - 它们可以设置为按钮.. 但我想这是我个人的选择!
    • 我不会假设任何事情,在这种情况下绝对不需要使用表格。我不会说在表单之外使用锚点而不是按钮有什么好处。至少我从来没有遇到过使用这两种方法的任何问题。我知道的一件事是,即使它有效,您也不应该在表单之外使用提交,这是一种不好的做法。
    • @ManseUK 好的。我更新了代码,所以一切都过去了。点击。它仍然不起作用。至于输入ID只有4个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多