적어도 하나의 체크 박스가 있는지 확인하기 위해이 간단한 스크립트를 사용하고 싶습니다만, getElementsByName 태그에서 뭔가 잘못되었다는 느낌이 들었습니다. 항목을 체크했는지 여부와 관계없이 항상 팝업 상자가 나타납니다.javascript multiple checkbox 유효성 확인
<script language="javascript">
function validate() {
var chks = document.getElementsByName('id[][]');
var hasChecked = false;
for (var i = 0; i < chks.length; i++) {
if (chks[i].checked) {
hasChecked = true;
break;
}
}
if (hasChecked == false) {
alert("Please select at least one.");
return false;
}
return true;
}
</script>
및 이상 결국 체크 박스와 끝까지하지 않을 수도 있습니다 형태 : 코멘트, 당신은 수도 말처럼 어쩌면 getElementsByTagName
var chks = document.getElementsByTagName('input');
for (var i in chks)
{
if (chks[i].getAttribute('type') == "checkbox")
{
if (chks[i].checked)
hasChecked = true;
}
}
를 사용
<form
enctype="multipart/form-data"
method="post"
action="formsubmission.php"
name="form_type" onSubmit="return validate()">
<input id="attrib-8-10" type="checkbox" value="10" name="id[8][10]">
<label class="Checkbox" for="attrib-8-10">thick</label>
<input id="attrib-8-11" type="checkbox" value="11" name="id[8][11]">
<label class="Checkbox" for="attrib-8-11">medium</label>
<input id="attrib-8-12" type="checkbox" value="12" name="id[8][12]">
<label class="Checkbox" for="attrib-8-12">thin</label>
선택기를'document.getElementsByName ("id")'로 변경하고 모든 입력 이름을 "id"로 변경하면 작동하는 것 같습니다. 왜 문제가 원래 발생 했습니까? 나는 잘 모르겠다. 나는 그것이 작동한다는 것을 알고있다. 다른 누군가가 이유를 설명하는 답변을 게시 해 주시길 바랍니다. – rcplusplus
'name' 속성을 이렇게 지정하는 특별한 이유가 있습니까? 대부분의 서버 측 언어는 당신이 배열을 다루는 양식 요소를 원한다는 사실을 인덱스를 지정할 필요가 없습니다 (이 경우'id []'를 사용합니다) –
아래의 mamadrood의 게시물에 대한 내 답변을 참조하십시오 . – skylab