У меня есть форма с некоторыми входными флажками. Например:

 <input type="checkbox" name="felhasznal_1" id="felhasznal_1" onclick="felhasznal(this)">
 <input type="checkbox" name="felhasznal_2" id="felhasznal_2" onclick="felhasznal(this)">
 <input type="checkbox" name="felhasznal_3" id="felhasznal_3" onclick="felhasznal(this)">

У меня есть скрытое значение для формы:

<input type="hidden" name="felhasznalas" value="">

Моя форма названа так:

 <form method="post" name="ujpartner_ceg" enctype="multipart/form-data" id="ujpartner_ceg">

И я хочу добавить маскированный идентификатор для значения felhasznalas. Но у меня есть 2 формы с одинаковыми входными данными, поэтому я назвал формы и хочу получить к ним доступ с помощью getelementByid, используя имя формы.

Вот мой JavaScript (сгенерированный php):

function felhasznal() {
document.ujpartner_ceges.getElementById('felhasznalas').value = '|x|';

if (document.ujpartner_ceges.getElementById('felhasznal_1').checked) {
document.ujpartner_ceges.getElementById('felhasznalas').value = document.ujpartner_ceges.getElementById('felhasznalas').value + '1|x|';
}
if (document.ujpartner_ceges.getElementById('felhasznal_2').checked) {
document.ujpartner_ceges.getElementById('felhasznalas').value = document.ujpartner_ceges.getElementById('felhasznalas').value + '2|x|';
}
if (document.ujpartner_ceges.getElementById('felhasznal_3').checked) {
document.ujpartner_ceges.getElementById('felhasznalas').value = document.ujpartner_ceges.getElementById('felhasznalas').value + '3|x|';
}
}

Что я сделал не так?

РЕДАКТИРОВАТЬ: я получаю эту ошибку: TypeError: document.ujpartner_ceges не является функцией.

ВНИМАНИЕ: у меня есть форма с теми же входными данными с именем ujpartner_magan!

0
user1632298 31 Янв 2013 в 16:39

3 ответа

Лучший ответ

Во-первых, я бы использовал document.getElementById без «ujpartner_ceges».

И основная проблема заключается в том, что ваши входные данные не имеют идентификаторов, если вы используете идентификаторы точно так же, как имена, которые ваша функция будет работать, как предполагалось.

0
w3jimmy 31 Янв 2013 в 12:55

Это может быть проблемой: onclick="felhasznal(this)"

Но ваша функция не принимает параметров ...

function felhasznal() {

Добавьте параметр в функцию:

function felhasznal(myCheckbox) {

Или

Удалите this из обработчика onclick.

0
GeorgeVremescu 31 Янв 2013 в 12:44

Ваш скрытый ввод не имеет идентификатора, только имя.

Используйте <input type="hidden" id="felhasznalas" value=""> вместо этого.

Идентификатор должен быть уникальным для DOM (страницы), а не только для формы, поэтому, если у вас есть несколько форм, вы должны использовать префикс элемента управления, например: <input type="hidden" id="form1_felhasznalas" value="">.

Затем используйте document.getElementById вместо document.ujpartner_ceges.getElementById.

Я также потратил бы пару часов на изучение jquery, это удивительный javascript-cross-browser-framework / framework для работы такие вещи, как это :)!

Вот скрипка: http://jsfiddle.net/3AguQ/ Я изменил скрытый ввод текста, чтобы вы могли увидеть результаты ...

Вот код:

<script>
  function felhasznal(prefix)
  {
    document.getElementById(prefix + '_felhasznalas').value = '|x|';

    if (document.getElementById(prefix + '_felhasznal_1').checked)
    {
      document.getElementById(prefix + '_felhasznalas').value = document.getElementById(prefix + '_felhasznalas').value + '1|x|';
    }

    if (document.getElementById(prefix + '_felhasznal_2').checked)
    {
      document.getElementById(prefix + '_felhasznalas').value = document.getElementById(prefix + '_felhasznalas').value + '2|x|';
    }

    if (document.getElementById(prefix + '_felhasznal_3').checked)
    {
      document.getElementById(prefix + '_felhasznalas').value = document.getElementById(prefix + '_felhasznalas').value + '3|x|';
    }
  }      
</script>

<form method="post" enctype="multipart/form-data">
   <input type="hidden" id="form1_felhasznalas" value="">
   <input type="checkbox" name="felhasznal_1" id="form1_felhasznal_1" onclick="felhasznal('form1')">
   <input type="checkbox" name="felhasznal_2" id="form1_felhasznal_2" onclick="felhasznal('form1')">
   <input type="checkbox" name="felhasznal_3" id="form1_felhasznal_3" onclick="felhasznal('form1')">
</form>

<form method="post" enctype="multipart/form-data">
   <input type="hidden" id="form2_felhasznalas" value="">
   <input type="checkbox" name="felhasznal_1" id="form2_felhasznal_1" onclick="felhasznal('form2')">
   <input type="checkbox" name="felhasznal_2" id="form2_felhasznal_2" onclick="felhasznal('form2')">
   <input type="checkbox" name="felhasznal_3" id="form2_felhasznal_3" onclick="felhasznal('form2')">
</form>
-1
bang 31 Янв 2013 в 13:29