フォーム要素を以下のように指定すると、フォームのサブミットを呼び出すと、URLエンコードされたフォームのリクエストボディ/ = {username} & password = {password} & submit = submit "{}内の値は、対応する入力要素のテキストボックスから取得されます。入力要素がマルチプルdivにある場合、フォームの送信でクエリパラメータが生成されない
<form action="/action.php" method="POST">
<input id="username" type="text" />
<input id="password" type="password" />
<input type="submit" id="submit" value="submit" />
</form>
しかし、私はのdivの複数のレベルで私の入力要素を配置するつもりならば、フォーム送信はリクエストボディ/クエリパラメータを生成するために失敗します。
<form action="/action.php" method="POST">
<div id="inside_formdiv">
<div id="userdiv">
<input id="username" type="text" />
</div>
<div id="passworddiv">
<input id="password" type="password" />
</div>
<div id="submit_div">
<input type="submit" id="submit" value="submit" />
</div>
</div>
</form>
誰も私にそのような理由を教えてもらえますか?この仕様では、入力要素がForm要素の直接の子要素である必要はありません。私はこの動作の正当な理由が不思議でした。
値が要素に移入され、私が最初に気づくのは、あなたの入力が「name」属性が欠落していることである
<script type="text/javascript">
function logincheck() {
alert ('hi ' + document.getElementById('username').value);
alert ('hi ' + document.getElementById('password').value);
}
</script>
<form action="/action.php" method="POST">
<div id="inside_formdiv">
<div id="userdiv">
<input id="username" type="text" />
</div>
<div id="passworddiv">
<input id="password" type="password" />
</div>
<div id="submit_div">
<input type="submit" onclick="logincheck()" />
</div>
</div>
</form>
このフィドルは私のために働く:http://jsfiddle.net/Cn9bE/2/。あなたのために働かないのですか? – pimvdb
HTMLはOKですが、このURLエンコードのフォーム値はどこにありますか? PHP側? – LeleDumbo