作成日:2017-12-18, 更新日:2021-04-13
javascript
クリックイベントをjqueryにしているので、jqueryを使っていない記述にする必要アリ。
<button class="btn btn-primary">formタグなしでform送信</button> <script> $(〇〇〇).on('click', 'button.btn', function(){ // form送信したい内容。 var _ipt = ({}); _ipt.Key01 = "値01"; _ipt.Key02 = "値02"; // formタグのもとを作成 var _form = document.createElement("form"); for (var i in _ipt) { // inputタグを作成 var _tmpInput = document.createElement("input"); _tmpInput.setAttribute("name", i); // inputタグのname属性の値 _tmpInput.setAttribute("type", "text"); // inputタグのtype属性の値(全部textで良さそうな気がする→hiddenで大丈夫のような気もする) _tmpInput.setAttribute("value", _ipt[i]); // inputタグのvalue属性の値 // formタグの中にinputタグを追加 _form.appendChild(_tmpInput); } _form.action = "getform.php"; // formタグのaction属性の値と同じ。 _form.method = "post"; // formタグのmethod属性の値と同じ。(get / post) _form.target = "_blank"; // formタグのtarget属性の値と同じ。不要なら無くてOK _form.encoding="application/x-www-form-urlencoded"; // formを出力しないと送信できないブラウザがある _form.style = "overflow:hidden;width:0;height:0;"; document.body.appendChild(_form); // formを送信 _form.submit(); }); </script>
jquery
<button type="button" class="btn btn-primary">formタグなしでform送信</button> <script> $(〇〇〇).on('click', 'button.btn', function(){ // formタグを作成 var tagForm = $('<form></form>'); // action、method属性を指定。他は必要に応じて設定。 tagForm.attr({ 'action': 'getform.php', 'method': 'post', // 'target': '_blank', 'encoding': 'application/x-www-form-urlencoded', }); // input要素たちをformタグに入れていく。 tagForm.append('<input type="text" name="ipt01" value="値01" />'); tagForm.append('<input type="text" name="ipt02" value="値02" />'); // formタグを出力:出力しないと送信されないブラウザがいる tagForm.attr({ 'style': 'overflow:hidden;width:0;height:0;' }); $("body").append(tagForm); // 送信 tagForm.submit(); }); </script>