자바 스크립트에 익숙하지 않지만이 코드는 특히 '필드 제거'링크가있는 곳과 유사합니다. 여기자바 스크립트 기능 필드 추가/제거 기능
//Add more fields dynamically.
function addField(field,area,limit) {
if(!document.getElementById) return; //Prevent older browsers from getting any further.
var field_area = document.getElementById(area);
var all_inputs = field_area.getElementsByTagName("input"); //Get all the input fields in the given area.
//Find the count of the last element of the list. It will be in the format '<field><number>'. If the
// field given in the argument is 'friend_' the last id will be 'friend_4'.
var last_item = all_inputs.length - 1;
var last = all_inputs[last_item].id;
var count = Number(last.split("_")[1]) + 1;
//If the maximum number of elements have been reached, exit the function.
// If the given limit is lower than 0, infinite number of fields can be created.
if(count > limit && limit > 0) return;
if(document.createElement) { //W3C Dom method.
var li = document.createElement("li");
var input = document.createElement("input");
input.id = field+count;
input.name = field+count;
input.type = "text"; //Type of field - can be any valid input type like text,file,checkbox etc.
li.appendChild(input);
field_area.appendChild(li);
} else { //Older Method
field_area.innerHTML += "<li><input name='"+(field+count)+"' id='"+(field+count)+"' type='text' /></li>";
}
}
형태의 HTML한다 : 그러나
<form name="frm" method="POST">
<strong>Neutral List</strong><br />
<ol id="neutrals_area">
<li><input type="text" name="neutral_1" id="neutral_1" /> <a style="cursor:pointer;color:blue;" onclick="this.parentNode.parentNode.removeChild(this.parentNode);">Remove Field</a></li>
<li><input type="text" name="neutral_2" id="neutral_2" /> <a style="cursor:pointer;color:blue;" onclick="this.parentNode.parentNode.removeChild(this.parentNode);">Remove Field</a></li>
<li><input type="text" name="neutral_3" id="neutral_3" /> <a style="cursor:pointer;color:blue;" onclick="this.parentNode.parentNode.removeChild(this.parentNode);">Remove Field</a></li>
<li><input type="text" name="neutral_4" id="neutral_4" /> <a style="cursor:pointer;color:blue;" onclick="this.parentNode.parentNode.removeChild(this.parentNode);">Remove Field</a></li>
<li><input type="text" name="neutral_5" id="neutral_5" /> <a style="cursor:pointer;color:blue;" onclick="this.parentNode.parentNode.removeChild(this.parentNode);">Remove Field</a></li>
</ol>
<input type="button" value="Add Neutral Field" onclick="addField('neutrals_area','neutral_',0);" />
</form>
내가의 '링크 제거'코드뿐만 아니라 사람을 생성하기 위해 추가 필드를 싶습니다, 여기에 javscript 기능입니다 스크립트에 코드가 있습니다. 사용자 정의 함수는 해당 동작을 포함하도록 조정해야하지만 모든 기능을 작동 시키려면 문제가있는 것으로 알고 있습니다. 그것은 읽을 수있는 코드를 편집하여 addField 함수의 맨 아래에 "다른 {}"다음과 같은 기존의 방법으로 그것을 할 간단 보인다
} else { //Older Method
field_area.innerHTML += "<li><input name='"+(field+count)+"' id='"+(field+count)+"' type='text' /><a style="cursor:pointer;color:blue;" onclick="this.parentNode.parentNode.removeChild(this.parentNode);">Remove Field</a></li>";
}
을하지만, 나는 그것을 포함하는 방법으로 난처한 상황에 빠진거야 W3C DOM 메서드에서?
감사합니다. 나는 이것을 시도 할 것이다. 이것은 간단 해 보인다. 내가하고있는 일의 핵심을 이해하면 더 복잡해지기를 바라고 있습니다. 특히, 그룹으로 필요에 따라 추가하거나 제거 할 수있는 세 개의 필드 그룹 (예 : 자동차 제조업체, 엔진 유형 및 연도) –
스타일 속성을 잊어 버린 경우 :-) http://jsfiddle.net에서 수정되었습니다./wtX7Y/ – Bergi
학습 목적으로 나는 손으로 만든 일반 솔루션에 동의하지만 프로덕션 환경에서는 깨끗하고 가볍고 잘 테스트 된 라이브러리에 의존하지 않는 이유를 알 수 없습니다. – kappa