![](/img/trans.png)
[英]How to dynamically remove input field which is created dynamically using JavaScript
[英]How to dynamically remove a input form created in html using javascript
我目前陷入困境,不知道該怎么辦。 解決方案可能很簡單,但是由於我是JavaScript環境的新手,所以我很迷路。
我創建了一個檢查選項,當按下該選項時,它會生成一個輸入表單,並用“添加新”按鈕填充該表單以生成另一個輸入表單。
在我的代碼中,當按下“添加新”按鈕時,它已經創建了一個帶有“刪除”按鈕的動態輸入表單,但是按下時我似乎無法使此“刪除”禁令起作用。
歡迎所有幫助。 我正在將HTML與JavaScript結合使用。 最終,我將使用pup作為中間人將這些表單值保存在sql數據庫中。
PS:由於該頁面已經在其中創建,因此我正在從事WordPress作為Web開發的工作,是的,我知道除了主要的HTML頁面之外,我還應該使用JavaScript和CSS。
這是我到目前為止的代碼:
<!DOCTYPE html>
<html>
<style type="text/css">
label{
float:left;
width: 10em;
text-align: right;
margin-right: 10px;
}
</style>
<script type="text\javascript">
function checkform(form) {
// get all the inputs within the submitted form
var inputs = form.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++) {
// only validate the inputs that have the required attribute
if(inputs[i].hasAttribute("required")){
if(inputs[i].value == ""){
// found an empty field that is required
alert("Please fill all required fields");
return false;
}
}
}
return true;
}
</script>
<script type="text/javascript">
//This function adds another form input when button "Add" is pressed
var counter = 1;
var limit = 5;
function addInput(divName){
if (counter == limit) {
alert("You have reached the limit of adding " + counter + " Co-PI or Co-Investigators");
}
else {
var divName = divName;
var newDivName = (divName + counter);
var newdiv = document.createElement('div');
newdiv.id = "dynamicInput" + counter;
newdiv.innerHTML = (counter + 1) + ". Co-PI or Co-Investigator Information: <br>" +
"<label>First Name : </label><input type='text' name='fname[]' maxlength='35' required><br> " +
"<label>Last Name : </label><input type='text' name='lname[]' maxlength='35'><br> " +
"<label>Degree : </label><input type='text' name='degree[]' maxlength='10'><br> " +
"<label>Current Position : </label><input type='text' name='cPos[]' maxlength='30'><br> " +
"<label>Institution : </label><input type='text' name='inst[]' maxlength='40'><br> " +
"<label>School : </label><input type='text' name='school[]' maxlength='40'><br> " +
"<label>Department : </label><input type='text' name='depart[]' maxlength='40'><br> " +
"<label>Program : </label><input type='text' name='program[]' maxlength='40'><br> " +
"<label>Email : </label><input type='text' name='email[]' maxlength='255'><br> " +
"<label>Phone (xxx-xxx-xxxx) : </label><input type='text' name='phone[]' maxlength='10'> <br><br>" +
"<input type='button' value='Delete Previous Form' onClick='removeForm(divName, newDivName);'> ";
document.getElementById(divName).appendChild(newdiv);
counter++;
}
}
//Delete div form when delete button is pressed
function removeForm(parentDiv, childDiv){
if(childDiv == parentDiv)
{
alert("Cannot delete anymore form entries!");
}
else if (document.getElementById(childDiv))
{
var child = document.getElementById(childDiv);
var parent = document.getElementById(parentDiv)
parent.removeChild(child);
counter--;
}
else
{
alert("Form has been removed or does not exist.");
return false;
}
}
</script>
<script type="text/javascript">
function aff_div(ladiv) {
document.getElementById(ladiv).style.display = "inline";
}
function cach_div(ladiv) {
document.getElementById(ladiv).style.display = "none";
}
function affich_conj() {
if (document.forms.CoPI_CoInv_Info.yesNoChkbox[0].checked == true) {
aff_div("dynamicInput");
aff_divBtn("btn_New_CoPI_Inv");
}
if (document.forms.CoPI_CoInv_Info.yesNoChkbox[1].checked == true) {
cach_div("dynamicInput");
cach_divBtn("btn_New_CoPI_Inv");
}
}
function aff_divBtn(BtnDiv) {
document.getElementById(BtnDiv).style.display = "inline";
}
function cach_divBtn(BtnDiv) {
document.getElementById(BtnDiv).style.display = "none";
}
</script>
<form id="CoPI_CoInv_Info" onsubmit="return checkform(this)">
<label1>Do you want to add a Co-PI or Co-Investigator? </label1>
<input type="radio" name="yesNoChkbox" value="yes" onclick="affich_conj();"> yes
<input type="radio" name="yesNoChkbox" value="no" checked="checked" onclick="affich_conj();"> no
<br><br>
<div id="dynamicInput">
1. Co-PI or Co-Investigator Information: <br>
<label>First Name : </label><input type="text" name="fname[]" maxlength="35" required><br>
<label>Last Name : </label><input type="text" name="lname[]" maxlength="35"><br>
<label>Degree : </label><input type="text" name="degree[]" maxlength="10"><br>
<label>Current Position : </label><input type="text" name="cPos[]" maxlength="30"><br>
<label>Institution : </label><input type="text" name="inst[]" maxlength="40"><br>
<label>School : </label><input type="text" name="school[]" maxlength="40"><br>
<label>Department : </label><input type="text" name="depart[]" maxlength="40"><br>
<label>Program : </label><input type="text" name="program[]" maxlength="40"><br>
<label>Email : </label><input type="text" name="email[]" maxlength="255"><br>
<label>Phone (xxx-xxx-xxxx) : </label><input type="text" name="phone[]" maxlength="10"> <br><br>
</div>
<divBtn id="btn_New_CoPI_Inv">
<input type="button" value="Add New Co-PI or Co-Investigator..." onClick="addInput('dynamicInput');">
</divBtn>
</form>
<script type="text/javascript">
cach_div("dynamicInput");
cach_divBtn("btn_New_CoPI_Inv");
</script>
</html>
您需要引用和轉義字符串中的變量,請看內聯事件處理程序。
var divName = divName;
var newDivName = (divName + counter);
var newdiv = document.createElement('div');
newdiv.id = "dynamicInput" + counter;
newdiv.innerHTML = (counter + 1) + ". Co-PI or Co-Investigator Information: <br>" +
"<label>First Name : </label><input type='text' name='fname[]' maxlength='35' required><br> " +
"<label>Last Name : </label><input type='text' name='lname[]' maxlength='35'><br> " +
"<label>Degree : </label><input type='text' name='degree[]' maxlength='10'><br> " +
"<label>Current Position : </label><input type='text' name='cPos[]' maxlength='30'><br> " +
"<label>Institution : </label><input type='text' name='inst[]' maxlength='40'><br> " +
"<label>School : </label><input type='text' name='school[]' maxlength='40'><br> " +
"<label>Department : </label><input type='text' name='depart[]' maxlength='40'><br> " +
"<label>Program : </label><input type='text' name='program[]' maxlength='40'><br> " +
"<label>Email : </label><input type='text' name='email[]' maxlength='255'><br> " +
"<label>Phone (xxx-xxx-xxxx) : </label><input type='text' name='phone[]' maxlength='10'> <br><br>" +
"<input type='button' value='Delete Previous Form' onClick='removeForm(\""+divName+"\", \""+newDivName+"\");'> ";
如果您要使用parentNode
選擇器,則可以簡化removeForm
函數,因為它看起來像按鈕是您創建的div的直接子代,因此您可以這樣做:
function removeForm(e){
e.target.parentNode.parentNode.removeChild( e.target.parentNode );
}
並使用
<input type='button' value='Delete Previous Form' onClick='removeForm(event);'>
嘗試您要刪除的Div的傳遞ID:
newdiv.id = "dynamicInput" + counter;
newdiv.innerHTML = (counter + 1) + "... <input type='button' value='Delete Previous Form' onClick='removeForm(\"dynamicInput\"" + counter");'>";
然后,在removeForm()中:
function removeForm(id){
if(document.getElementById(id)) document.getElementById(id).outterHTML ='';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.