2009-06-16 6 views
21

JavaScriptで非表示フィールドを特定のフォームに作成するにはどうすればよいですか?JavaScriptで非表示フィールドを作成する

<html> 
    <head> 
     <script type="text/javascript"> 
     var a =10; 
function test() { 
     if (a ==10) { 
     // ... Here i need to create some hidden field for form named = chells 
     } 
} 
     </script> 
    </head> 
    <body > 
     <form id="chells" name="formsdsd"> 
     <INPUT TYPE=BUTTON OnClick="test();"> 
    </form> 
    </body> 
    </html> 
+4

yフォームが存在する前にスクリプトが実行されています。あなたが望むものは不可能です。あなたはそれを関数に書いて、それをonloadイベントに割り当てることができます。あなたのHTMLにもいくつかのエラーがあります。http://validator.w3.org/ – Quentin

答えて

74
var input = document.createElement("input"); 

input.setAttribute("type", "hidden"); 

input.setAttribute("name", "name_you_want"); 

input.setAttribute("value", "value_you_want"); 

//append to form element that you want . 
document.getElementById("chells").appendChild(input); 
+1

を参照してください。フォームコレクションは、名前付きフォームのgetElementByIdよりも適切です。これはJSとDOMロードの実行順序に依存しますが、 – annakata

+0

しかし、私はちょうどそのフォーム要素がnullであると言って使用しようとします – joe

+0

デビッドが指摘したように、DOMがロードされた後に*実行していることを確認してください。初心者のためにonloadイベントを使ってみてください。同じポイントで – annakata

17

あなたは、私が仕事にこれを見つけたフライ

$('#form').append('<input type="hidden" name="fieldname" value="fieldvalue" />'); 

またはその他の方法

$('<input>').attr({ 
    type: 'hidden', 
    id: 'fieldId', 
    name: 'fieldname' 
}).appendTo('form') 
3

上の要素を作成するためのjQueryを使用することができます。

var element1 = document.createElement("input"); 
element1.type = "hidden"; 
element1.value = "10"; 
element1.name = "a"; 
document.getElementById("chells").appendChild(element1); 
関連する問題