2012-05-03 8 views
1

どのチェックボックスが選択されているかに基づいて、フォームに隠れた入力を書きたいと思っています。私の例では、IMは、エラーが発生していないが、それはまだ文句を言わない、隠れfields-(編集済み)javascriptでどのチェックボックスが選択されているかに基づいて隠しフォームフィールドを追加するにはどうすればよいですか?

<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> 
<div id="test"></div> 
<input type="hidden" name="cmd" value="_cart"> 
<input type="hidden" name="upload" value="1"> 
<input type="hidden" name="business" value="[email protected]"> 
<input type="hidden" name="currency_code" value="US"> 
<input type="checkbox" id="chkbox1" name="camp1" value="a"> 
<input type="checkbox" id="chkbox2" name="camp2" value="b"> 
<input type="submit" value="PayPal"> 
</form> 
<script type="text/javascript"> 
var element = document.getElementById('test'); 
if(element != null && element.checked) { 

var newElement = document.createElement('input'); 
newElement.type = "hidden"; 
newElement.name = "item_name_1"; 
newElement.value = "MyItem #1"; 

document.getElementById('chkbox1').appendChild(newElement); 

var newElement2 = document.createElement('input'); 
newElement2.type = "hidden"; 
newElement2.name = "amount_1"; 
newElement2.value = "7.00"; 

document.getElementById('test').appendChild(newElement2); 
} 

を渡す理論的にはこれは動作するはずですが、それは私が困惑持っています。誰かがいくつかのアドバイスを提供することができれば、それは非常に高く評価されます

+0

完全には関係しませんが、挿入する価格に何らかのサーバー側の検証があることを確認してください – CountMurphy

+0

これは、スクリプトを実行しているときはいつでも、これらのフィールドをチェックボックスとして追加/削除する場合にのみ発生しますそれぞれのチェックボックスにチェックされたイベントのハンドラを追加する必要があります。ただし、バックエンドのチェックボックスの選択に基づいて、フィールドをいずれかの方法で行い、何をすべきかを決めるのがおそらく最も簡単です。 –

+1

あなたはそのjsコードをどこに置いていますか?チェックボックスの 'onclick'イベントでそれをトリガする関数を作成する必要があります。また、隠れた入力は本当に必要ですか?隠し入力の値を代わりにチェックボックスの値に入れることはできませんか? –

答えて

3

最初に、ウェブページのコンテキストでは、document.writeを使用しないでください。それは悪い習慣です。あなたが動的に純粋なJavaScriptで要素を追加したい場合は、単に新しい要素を作成します。

var newElement = document.createElement('input'); 
newElement.type = "hidden"; 
newElement.name = "something"; 
newElement.value = "someValue"; 

document.getElemenytById('somecontainer').appendChild(newElement); 

第二に、エラーがあなたの文のいずれかのdocument.getElementById呼び出しが指定された要素が見つからなかったことを意味します。あなたのスクリプトがあり、このフォームはあなたのページにある場合、あなたはロードの配置に苦しんで可能性がどこの位置を知らなくても、

var element = document.getElementById('chkbox1'); 

if(element != null && element.checked) 
    // Do Stuff 

:あなたは結果を確認nullにする必要があります。 HTMLが読み込まれる前にスクリプトが実行されている場合は、要素が見つかりません。

+0

'document.write.test'は無効です – Matt

関連する問題