Изменение одного значения формы на основе onChange другого с помощью JavaScript - PullRequest
1 голос
/ 19 февраля 2011

Я не могу заставить эту функцию работать.Я пытаюсь изменить значение ввода "бизнес" в моей форме на основе суммы, выбранной в раскрывающемся списке "сумма".Что мне не хватает !!!Я пытался это в течение часа.

  <script type="text/javascript">
  function chPy()
  {
  var businessvar = "paypals@ramatico.com";
  if (document.forms['5'].amount.value > 11){
  businessvar = "paypall@ramatico.com"
  }
  document.forms['5'].business.value = businessvar;
  }
  </script>

  <form name="5">
  <select name="amount" OnChange="chPy()">
      <option value="na">Select</option>
      <option value="1.00">$1</option>
      <option value="5.00">$5</option>
      <option value="10.00">$10</option>
      <option value="15.00">$15</option>
      <option value="20.00">$20</option>
      <option value="25.00">$25</option>
  </select> 
  <input name="business" type="text" value="">
  </form>

Хорошо.Следующий шаг.У меня есть около 100 таких форм на странице.Вместо того, чтобы создавать по одному для каждой формы, я хотел бы иметь один скрипт, который меняется в зависимости от того, какая форма изменяется с помощью «onChange».Каждая из форм на странице имеет значения с одинаковым именем (но не идентификатором) (они предназначены для PayPal).Я думаю, что все будет в порядке, если я смогу изменить «formname» следующим образом: «document.forms ['formname']» на основе переменной, заполненной чем-то вроде chPy («formname») и т. Д.Похоже, это тоже не сработало.

Ответы [ 3 ]

3 голосов
/ 19 февраля 2011

Удаление ссылки на форму позаботится об обоих ваших элементах.

 <script type="text/javascript">
  function chPy(oSelect)
  {
  var businessvar = "paypals@ramatico.com";
  if (oSelect.form.amount.value > 11){
  businessvar = "paypall@ramatico.com"
  }
  oSelect.form.business.value = businessvar;
  }
  </script>

  <form name="5">
  <select name="amount" OnChange="chPy(this)">
      <option value="na">Select</option>
      <option value="1.00">$1</option>
      <option value="5.00">$5</option>
      <option value="10.00">$10</option>
      <option value="15.00">$15</option>
      <option value="20.00">$20</option>
      <option value="25.00">$25</option>
  </select> 
  <input name="business" type="text" value="">
  </form>
0 голосов
/ 19 февраля 2011

HTML:

<form name="form5">
    <select name="amount">
        <option value="na">Select</option>
        <option value="1.00">$1</option>
        <option value="5.00">$5</option>
        <option value="10.00">$10</option>
        <option value="15.00">$15</option>
        <option value="20.00">$20</option>
        <option value="25.00">$25</option>
    </select> 
    <input type="text" name="business">
</form>

JavaScript:

var form5 = document.forms['form5'];

form5.amount.onchange = function() {
    form5.business.value =
        (this.value > 11 ? 'paypall' : 'paypals') + '@ramatico.com';
}

Демонстрационная версия: http://jsfiddle.net/Fx7zh/


Для нескольких форм:Вы можете использовать этот код JavaScript:

for (var i = 0, l = document.forms.length; i < l; i++) {
    document.forms[i].amount.onchange = function(i) {
        this.form.business.value =
            (this.value > 11 ? 'paypall' : 'paypals') + '@ramatico.com';
    }
}

Демонстрационная версия: http://jsfiddle.net/Fx7zh/2/

0 голосов
/ 19 февраля 2011

Проблема в том, что вы используете номер в качестве имени формы.

Добавьте несколько букв к имени, и оно будет работать:

<script type="text/javascript">
  function chPy()
  {
  var businessvar = "paypals@XYZ.com";
  if (document.forms['form5'].amount.value > 11){
  businessvar = "paypall@XYZ.com"
  }
  document.forms['form5'].business.value = businessvar;
  }
  </script>

  <form name="form5">
  <select name="amount" OnChange="chPy()">
      <option value="na">Select</option>
      <option value="1.00">$1</option>
      <option value="5.00">$5</option>
      <option value="10.00">$10</option>
      <option value="15.00">$15</option>
      <option value="20.00">$20</option>
      <option value="25.00">$25</option>
  </select> 
  <input name="business" type="text" value="">
  </form>
...