有两种方法可以做到这一点,即在单击时调用 JavaScript 函数,或者在提交表单时调用它。
1)调用函数onclick:
将表单包装在表单标签中,并根据元素 ID 调用 JavaScript 函数。
请注意,单击按钮时会调用 showInput 函数。
function showInput() {
console.log('showInput called...')
var userInput = document.getElementById("userInput").value;
var display = document.getElementById("display");
display.innerHTML = userInput;
}
<section class="message-board">
<div class="title">
<h2>
Leave a message
</h2>
</div>
<form>
<textarea class="message" type="text" id="userInput"></textarea><br/>
</form>
<input type="submit" onclick="showInput();">
<div class="display-area">
Existing comment:
</div>
<p><span id="display"></span></p>
</section>
这是一个 jsfiddle,与上面的代码相同:http: //jsfiddle.net/ethanryan/94kvj0sc/
请注意,jsfiddle 中的 JavaScript 在 HTML 的 Head 部分的底部被调用。
2)表单提交调用函数:
您也可以通过在提交表单时调用 JavaScript 函数来完成此操作,而不是单击按钮。但是,由于这个表单使用了一个文本区域,所以点击返回会在文本中添加一个换行符,并且不会提交表单,所以仍然需要单击按钮才能调用该函数。
function showInput() {
console.log('showInput called...')
event.preventDefault()
var userInput = document.getElementById("userInput").value;
var display = document.getElementById("display");
display.innerHTML = userInput;
}
<section class="message-board">
<div class="title">
<h2>
Leave a message
</h2>
</div>
<form onsubmit="showInput()">
<textarea class="message" type="text" id="userInput"></textarea><br/>
<input type="submit" value="Submit">
</form>
<div class="display-area">
Existing comment:
</div>
<p><span id="display"></span></p>
</section>
注意表单中的 event.preventDefault(),因为表单的默认行为是将数据提交到后端数据库。
jsfiddle:http: //jsfiddle.net/ethanryan/qpufd469/
3.追加而不是替换文本
最后,我上面的示例使用了 innerHTML 来替换 userInput 文本。如果要追加而不是替换文本,可以使用 insertAdjacentHTML 将文本添加到末尾,然后在其上附加换行符。最后,您可以重置表单。
function showInput() {
console.log('showInput called...')
event.preventDefault()
var userInput = document.getElementById("userInput").value;
var display = document.getElementById("display");
var theForm = document.getElementById("theForm");
var linebreak = document.createElement("br");
display.insertAdjacentHTML('beforeend', userInput);
display.appendChild(linebreak);
theForm.reset();
}
<section class="message-board">
<div class="title">
<h2>
Leave a message
</h2>
</div>
<form onsubmit="showInput()" id="theForm">
<textarea class="message" type="text" id="userInput"></textarea><br/>
<input type="submit" value="Submit">
</form>
<div class="display-area">
Existing comment:
</div>
<p><span id="display"></span></p>
</section>
jsfiddle:http: //jsfiddle.net/ethanryan/x4hq0Lzp/