【问题标题】:Onchange from dropdown -> from fieldOnchange 从下拉菜单 -> 从字段
【发布时间】:2023-03-29 14:11:02
【问题描述】:

我真的对JS一无所知。我在 excel 中做了一个计算,但我在我的 www 上看到了它。我决定从 .net 复制示例。我一步一步地改变了大部分事情。现在我被卡住了......

我的表单开头有 3 个字段:

<li id="li_14">
<label class="description" for="cena_on">CON </label>
<div>
<!-- HERE USER SET PRICE 1 -->
€ <input id="cena_on" type="text" maxlength="255" value="" />
</div>
</li>
<li id="li_15">
<label class="description" for="cena_pb">CPB</label>
<div>
<!-- HERE USER SET PRICE 2 -->
€ <input id="cena_pb" type="text" maxlength="255" value="" />
</div>
</li>
<li id="li_16">
<label class="description" for="cena_lpg">CLPG </label>
<div>
<!-- HERE USER SET PRICE 3 -->
€ <input id="cena_lpg" type="text" maxlength="255" value="" />
</div>
</li>

此字段是正确进行所有计算所必需的。 稍后用户需要使用下拉菜单选择一个选项。此选项的值取自前 3 个字段。

        <div>
<select id="element_21" onChange="pali"> 
              <option value="cena_on1" >ON</option>
              <option value="cena_pb1" >PB</option>
              <option value="cena_lpg1" >LPG</option>
        </select>
        </div>

因为我不能自己制作 JS 我尝试了很多例子来制作它,我试图以某种方式设置 cena_on = cena_on1。一开始完全不同,但经过 20++ 次测试后,所有的值都很奇怪,我很困惑。 :S

例如如何制作: 如果来自字段 1 的 cena_on 为 1 cena_bp 为 2 而 cena_lpg 是 3

那么下拉选项ON也是1,PB 2和lpg 3?然后我可以将这个选定的值用于我的计算。

  var PAL = (element_21 * 12);
  $('#PAL').text(PAL);

【问题讨论】:

  • 我已尝试理解您的帖子/问题 3 次,但仍然无法理解您的目标。
  • 完成任务的唯一方法是学习 JS 和 HTML。你不能不先学习就写代码。
  • 您可以通过检查&lt;select&gt; 元素而不是其值来从&lt;select&gt; 元素中获取您要查找的数值。
  • J.Meijer - 对不起。我的英语并不完美,也很难谈论你不知道的事情......@Teemu - 对!特别是如果你有时间做这件事,并且当你确定你将来会使用它时——所以不适合我;)

标签: javascript html field onchange dropdown


【解决方案1】:

当您指向 $ 符号时,我假设您正在使用 Jquery。所以:

$(document).ready(function(){
  $("#element_21").change(function(){
  // Detect what option is selected (also remove 1 from its value)
  var fieldId="#" + $(this).val().replace("1","");

  // Jump to the input field with same id extracted above:
  var userinput= $(fieldId).val();

  //Do your calculations
  var PAL = (userinput * 12);
  $('#PAL').text(PAL);
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li id="li_14">
<label class="description" for="cena_on">CON </label>
<div>
<!-- HERE USER SET PRICE 1 -->
€ <input id="cena_on" type="text" maxlength="255" value="" />
</div>
</li>
<li id="li_15">
<label class="description" for="cena_pb">CPB</label>
<div>
<!-- HERE USER SET PRICE 2 -->
€ <input id="cena_pb" type="text" maxlength="255" value="" />
</div>
</li>
<li id="li_16">
<label class="description" for="cena_lpg">CLPG </label>
<div>
<!-- HERE USER SET PRICE 3 -->
€ <input id="cena_lpg" type="text" maxlength="255" value="" />
</div>
</li>
<br>

<div>
<select id="element_21"> 
      <option value="cena_on1" >ON</option>
      <option value="cena_pb1" >PB</option>
      <option value="cena_lpg1" >LPG</option>
</select>
<br><br>
Result:<br>
<div id="PAL"></div>
</div>

如果您希望在更改 input 值时实时更新最终结果,请在更改输入后立即在 &lt;select&gt; 上触发假 onChange

$("#cena_on,#cena_pb,#cena_lpg").on("input paste keyup",function(){
   $("#element_21").trigger("change");
})

【讨论】:

  • 我试过我的代码,但我把它搞砸了。我做了一个简短的版本来测试,并且有一个错误并且……不起作用link[link]
  • 您还需要做 2 件事: 1- 从选择元素中删除 onChange。还将 js 代码包装在 $(document).ready 中。我已经更新了答案。请运行 sn-p。
  • 嘿。谢谢你。我将它与我的其余代码混合在一起,它现在似乎可以正常工作。还有一个问题。我的代码带有 onchange,以便在表单更改后立即获得结果。现在我可以更改所有内容,但我需要返回下拉列表重新计算所有字段。如何制作实时结果或如何添加“计算”按钮。第一个选项对我来说更好。再次感谢您!
  • 好的。我已经通过在答案末尾添加代码来更新答案,以便在需要时触发 &lt;select&gt; 元素上的虚假更改。 (你可以投票赞成我对这个改变的回答。)
  • 效果很好!非常感谢你!!!!!!!!!!!!!!如果你想要 - 因为你已经解决了我的问题,你能告诉我如何将 NaN 更改为其他内容(当并非所有字段都被填写时)或者可能提醒 - 该字段填写错误或其他什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-06
  • 1970-01-01
  • 2012-08-18
  • 1970-01-01
  • 2012-08-03
相关资源
最近更新 更多