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

これは問題になる可能性があります。onclick="felhasznal(this)"

しかし、あなたの関数はパラメータを取りません...

function felhasznal() {

関数にパラメーターを追加します。

function felhasznal(myCheckbox) {

また

ハンドラーthisからを削除します。onclick

于 2013-01-31T12:44:06.100 に答える
0

まず、「ujpartner_ceges」なしでdocument.getElementByIdを使用します。

主な問題は、入力にIDがないことです。名前とまったく同じIDを使用すると、関数は意図したとおりに機能します。

于 2013-01-31T12:55:45.390 に答える
-1

非表示の入力には、名前だけのIDはありません。

<input type="hidden" id="felhasznalas" value="">代わりに使用してください。

IDは、フォームだけでなくDOM(ページ)に対して一意である必要があるため、複数のフォームがある場合は、コントロールのプレフィックスを付ける必要があります。例:<input type="hidden" id="form1_felhasznalas" value="">

次に、document.ujpartner_ceges.getElementByIdの代わりにdocument.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 に答える