[英]Is there a way of replacing the contents of a div on form submit using just html and javascript?
我正在嘗試使用純JavaScript,而不是jquery。 我有一個具有ID表單並在其中包含表單的div。 提交表單后,如何清空此div的內容並將其替換為提交的文本表單?
<div class="form">
<form action="">
...
</form>
</div>
聽submit
表單上的事件,則更換innerHTML
容器。
document.addEventListener('DOMContentLoaded', function() { const formContainer = document.querySelector('.form'); const form = formContainer.querySelector('form'); form.addEventListener('submit', function () { formContainer.innerHTML = `Thank you for telling me about ${form.someInput.value}`; }); });
<div class="form"> <form> <input name="someInput" type="text" /> <button type="submit">submit</button> </form> </div>
為表單及其周圍的div輸入ID:
<div class="form" id="form-wrapper">
<form id="my-form" action="#">
</form>
</div>
和您問的JavaScript:
var submitted = function(e){
var d = document.getElementById("form-wrapper");
d.innerHTML = "Form Submitted";
e.preventDefault();
}
var ele = document.getElementById("my-form");
if(ele.addEventListener){
ele.addEventListener("submit", submitted, false); //Modern browsers
}else if(ele.attachEvent){
ele.attachEvent('onsubmit', submitted); //Old IE
}
但是請記住,我們只是在阻止表單提交,所以我猜您將要在submitted
函數中添加一些AJAX處理。
這里有幾件事要注意...
<div>
的內容 例如,在文檔底部的<script>
標記中,位於</body>
。
let div = document.querySelector('.form') // find the first element by class
let form = div.querySelector('form') // find the form by tag
form.addEventListener('submit', e => {
// stop the page navigating away
e.preventDefault()
// submit the form via AJAX
fetch(form.action, {
method: form.method
body: new FormData(form)
}).then(res => {
// now update the <div> contents
div.innerHTML = res.ok ? 'Form Submitted' : 'Form submit failed'
})
})
請注意,這會將表單提交為multipart/form-data
。 如果您的后端只希望使用application/x-www-form-urlencoded
,則需要做更多的工作。 請參閱如何使用獲取API發布表單數據?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.