私のhtmlには、複数のフォーム(テキスト入力、ラジオボタン、チェックボックス、選択)と1つのボタンがあります。これらすべてのフォームに入力して、phpファイルに値を送信したいと思います。今のところ、テキスト入力と選択から値を送信しようとしていますが、この時点で行き詰まっています。
私はjs送信ファイルを持っています:
submitForms = function(){
document.getElementById("form1").submit();
document.getElementById("form2").submit();
}
そして私のフォームは次のようなものです:SELECT:
<form id ="form1" name="dists" action="solve.php" method="post">
<select id="demo" name="sadzba" onchange="selectElement1(this.value)>
<option value="">-- vyberte oblasť --</option>
</select>
</form>
テキスト入力フォーム+ボタン:
<form id="form2" action="solve.php" method="post">
<input type="text" name="spotVT" ><label>kWh za rok VT</label>
<div id="nt" style='display:none'><input type="text" name="spotNT" ><label>kWh za rok NT</label></div>
</form>
<input id="sub" type="button" value="Ok" style="margin-left:15px;" onclick="submitForms()"/>
しかし、これは機能していません。手伝ってくれませんか?ありがとうございました
1つのフォームを送信すると、そのフォームの送信後にページがJavaScriptをリロードまたは終了するため、Ajaxを使用して同時に複数のフォームを送信することをお勧めします
jqueryを使って
$("#sub").click(function(){
$("form").each(function(){
var fd = new FormData($(this)[0]);
$.ajax({
type: "POST",
url: "solve.php",
data: fd,
processData: false,
contentType: false,
success: function(data,status) {
//this will execute when form is submited without errors
},
error: function(data, status) {
//this will execute when get any error
},
});
});
});
上記のコードは、ID subのボタンをクリックすると、すべてのフォームを送信します
これは、ネイティブJavaScript実装の簡単な例です。
<!DOCTYPE html>
<html>
<head>
<title>Multiform - JAVASCRIPT</title>
</head>
<body>
<fieldset>
<legend>Form 1</legend>
<form name="f1" id="f1" onsubmit="return validate(this)">
<input type="text" name="username" placeholder="Username" />
</form>
</fieldset>
<fieldset>
<legend>Form 2</legend>
<form name="f2" id="f2" onsubmit="return validate(this)">
<input type="text" name="email" placeholder="Email" />
</form>
</fieldset>
<fieldset>
<legend>Form 3</legend>
<form name="f3" id="f3" onsubmit="return validate(this)">
<input type="text" name="password" placeholder="Password" />
</form>
</fieldset>
<button onclick="submitAll();">SUBMIT ALL</button>
<script>
'use strict';
function validate(form){
//forms processsing goes here...
console.log(form, form.name)
return false;
}
function submitAll(){
for(var i=0, n=document.forms.length; i<n; i++){
document.forms[i].onsubmit();
}
}
</script>
</body>
</html>
1つのフォームのみを送信する方が簡単です。 form = "your-form-id"を割り当てることで、selectタグとinputタグに同じフォーム名を付けることができます。
あなたはこれを試すことができます。すべてのフォームを送信することがページで問題ない場合
$('form').submit();
実際に使用されている関数:
function trySubmitAllForms() {
if ($('.saveSpinner').is(':visible')) {
return;
}
if ($('form').valid()) {
$('.saveSpinner').show();
$('form').submit();
} else {
showValidationErrorMessages();
}
}