Запускать функцию при каждом изменении элемента ввода: JQuery - PullRequest
0 голосов
/ 11 октября 2009

У меня есть форма под названием «волшебник». Каждый раз, когда изменяется любой элемент ввода, я хочу, чтобы функция 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 ??

Спасибо всем

EDIT

Извините, я имел в виду отдельные элементы.

<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>

EDIT2

Является ли проблемой, если эта форма находится в скрытом div? Я хватаюсь за соломинку, я понятия не имею, как это исправить!

Когда я снимаю с дисплея: нет, это по какой-то причине работает! Кстати, я использую это с плагином fancybox jquery.

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

1 Ответ

3 голосов
/ 11 октября 2009

Что такое "#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);
});

У вас есть два выбора с именем и идентификатором ядер, которые могут быть проблемой. Я добавил 10 в parseInt, так как обычно это то, чего хотят люди, и parseInt может делать странные вещи без него. К "#yellow" также прикреплено событие изменения? если нет, вам не нужно запускать изменение, даже тогда, установка его значения должна вызывать событие изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...