0

我有一个带有一些输入复选框的表单。例如:

 <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 的值添​​加一个蒙面的 id。但是我有 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 的具有相同输入的表单!

4

3 回答 3

0

首先,我将使用没有“ujpartner_ceges”的 document.getElementById。

主要问题是您的输入没有 ID,如果您使用的 ID 与您的函数将按预期工作的名称完全相同。

于 2013-01-31T12:55:45.390 回答
0

这可能是一个问题:onclick="felhasznal(this)"

但是你的函数没有参数......

function felhasznal() {

为函数添加参数:

function felhasznal(myCheckbox) {

或者

this从处理程序中删除onclick

于 2013-01-31T12:44:06.100 回答
-1

您的隐藏输入没有 ID,只是一个名称。

改为使用<input type="hidden" id="felhasznalas" value="">

DOM(页面)的 ID 必须是唯一的,而不仅仅是表单,因此如果您有多个表单,则必须为控件添加前缀,例如:<input type="hidden" id="form1_felhasznalas" value="">.

然后使用 document.getElementById 代替 document.ujpartner_ceges.getElementById。

我还需要几个小时来学习jquery,这是一个很棒的 javascript-cross-browser-framework/helper 做这样的事情:)!

这是一个小提琴: 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>
于 2013-01-31T13:08:00.217 回答