2010-11-23 5 views
1

자바 스크립트로 텍스트 입력 필드를 숨겨야합니다. 해당 유형 속성을 숨김으로 변경하면 IE (보안 문제)에서 작동하지 않습니다.자바 스크립트로 HTML 입력 필드를 숨기는 방법

가장 좋은 방법은 무엇입니까?

참고 : jQuery 또는 다른 lib는 가정 할 수 없습니다.

답변

1

폼의 조건 변경을 기반으로 텍스트 필드를 동적으로 표시하거나 숨겨야한다고 가정합니다. 그렇지 않으면 처음에 <input type="hidden"...이됩니다.

코드를 그대로 표시하고 숨기고, onsubmit 이벤트도 잡으십시오.

제출 핸들러에서 document.getElementById(...) (또는 document.forms[i]에 액세스)을 통해 텍스트 필드를 가져 와서 숨겨 졌는지 확인하십시오. 그것은 숨겨져있는 경우

, <input type="hidden" ...> 필드에 대한 새로운 DOM 노드를 만들고 아마 myform.appendChild(...)를 통해 양식에 해당 노드를 추가합니다. 서버 측 코드에서 기대하는 이름을 지정해야합니다. 숨겨진 텍스트 필드의 내용을 새로 만든 type = hidden 필드에 복사 한 다음 제출 처리자에서 반환하여 표준 제출이 계속되도록합니다.

제출시 텍스트 입력란을 숨기기 만 취소 할 수도 있지만 '제출 안함'으로 이동하거나 제출 처리 중에 다시 표시해야합니다.

0

변경할 수있는 유일한 방법은 DOM에 추가하기 전입니다. 새 요소를 만든 다음 현재 요소로 대체 ​​할 수 있습니다.

수동 DOM 스크립팅을 원하므로 replaceChild 및 createElement를 살펴보십시오. 나는 당신이 무엇을해야하는지 알고 있다고 생각합니다.

편집 : 숨겨진 필드는 내가 아는 한 입니다. 그들이 있는지 확인 했니? 또한 오프셋을 적용하기 위해 position:absolute; left:-9999em;을 수행 할 수도 있습니다.

+0

Re : 'position : absolute' - 예, 그렇지만 탭 순서대로 유지됩니다. 탭을 사용하지 못하도록 설정을 해제하더라도 제출할 때 여전히 전송됩니까? –

0

document.myform.myelement.style.display = '없음'도 Internet Explorer에서 예상대로

작품.

+0

그 다음 값은 양식 제출의 일부로 제출되지 않습니다. – Nir

0

div 또는 span으로 배치 한 다음 표시 스타일을 none으로 설정하고 숨길 때 (div를 사용한 경우) 또는 ifline (span을 사용한 경우)을 원할 때 none으로 설정하십시오. 그것을 보여주기 위해.

+0

양식 제출시 값을 보내야합니다. 내가 아는 한 숨겨진 항목은 모든 브라우저에서 전송되지 않습니다 (입력 유형 = '숨김'제외). – Nir

관련 문제