【问题标题】:Run Function on every change in an input element: JQuery在输入元素的每次更改上运行函数:JQuery
【发布时间】:2009-10-10 23:33:59
【问题描述】:

我有一个名为“向导”的表单。每次更改任何输入元素时,我都想要一个 Javascript 函数来运行和计算一些东西。我有以下内容:

// update hidden field "channels" in wizard based on servers/cores
$('form#wizard select[name=servers], form#wizard select[name=cores]').change(function() {
 var channels = parseInt($('form#wizard select[name=servers]').val()) * parseInt($('form#wizard select[name=cores]').val());
 $('#yellow').val(channels);
 $('#yellow').change();
 alert(channels);
});

以上是环绕的:

$(document).ready(function() {

上面似乎没有做我想要的。我是否必须特别为每个输入字段设置一个 onchnage 操作??

谢谢大家

编辑

对不起,我的意思是选择元素。

<form id="wizard">
Number of server(s) you are thinking of purchasing licenses for:
<select style="margin-left: 10px; font-size:15px; padding:1px;" name="servers" id="servers"><option value="1" selected="">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option></select>
server(s) <br/><br/> Each server will have: <select  style="font-size:15px; padding:1px;" name="cores" id="cores"><option style="margin-left: 10px;" value="115">a single core CPU</option><option value="230" selected="">a dual core CPU</option><option value="500">a quad core CPU</option><option value="960">an octo core CPU</option></select><br/><br/> And will be running: <select style="margin-left: 10px; font-size:15px; padding:1px; margin-right: 10px;" name="app" id="app"><option value="Asterisk" selected="">Asterisk®</option><option value="FreeSWITCH">FreeSWITCH</option></select> On
<select style="margin-left: 10px; font-size:15px; padding:1px;" name="cores" id="cores"><option value="Linux">Linux</option><option value="Solaris 10">Solaris 10</option><option value="OpenSolaris">OpenSolaris</option></select>
<br /><br />
</form>

编辑2

如果这个表单在一个隐藏的 div 中会不会有问题?我在这里抓着稻草,我不知道如何解决这个问题!

当我从 display:none 中删除时,它出于某种原因有效!顺便说一句,我正在将它与fancybox jquery 插件一起使用。

http://fancybox.net/js/fancybox/jquery.fancybox-1.2.1.js

【问题讨论】:

  • 完成 - 不知道这会有什么帮助?
  • 嗯,很明显,您在元素上使用了 id 和名称。由于您已经按名称引用输入元素,因此您不妨按 id 引用它们,因为它更快(显然)。
  • 对不起,我有点慢。但这会解决问题还是建议更快执行?谢谢
  • 你有两个名为“cores”的选择,对吗?
  • 我做了那个改变,但它并没有改变该死的东西!

标签: javascript jquery forms


【解决方案1】:

什么是“#yellow”?

$('form#wizard select').change(function() {
  var channels = (parseInt($('form#wizard select[name=servers]').val(), 10) *
    parseInt($('form#wizard select[name=cores]:first').val(), 10));
  $('#yellow').val(channels);
  $('#yellow').change();
  alert(channels);
});

您有两个具有内核名称和 ID 的选择,这可能是问题所在。我将 10 添加到 parseInt 中,因为这通常是人们想要的,没有它 parseInt 可以做一些奇怪的事情。 “#yellow”是否也附加了一个更改事件?如果不是,您不需要触发更改,即使那样,设置它的值也应该引发更改事件。

【讨论】:

  • Yellow 只是一个以黄色突出显示的 span 元素。我只是想让计算显示在那里,不,它没有更改事件。将测试您的建议。
  • 好的,我更改了 ID,但这还没有显示警报。 :(
  • 你能在不计算的情况下得到服务器和内核的值吗? IE。 alert($('form#wizard select[name=servers]').val()); alert($('form#wizard select[name=cores]').val());
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2011-11-10
  • 2021-06-25
  • 1970-01-01
  • 2019-01-16
  • 2010-11-17
  • 1970-01-01
相关资源
最近更新 更多