채택완료

[배열] select 값에따른 input 값의 한도를 체크하려 합니다.

2019-04-19 (금) 11:27:56 1,936
Copy
<form name="form" method="post" id="form" onsubmit="return submits(this);">

 

<select name="gi_edu_type[]">

<option value="">학력선택</option>
<option value="2">취학전아동</option>
<option value="3" >초중고생</option>
<option value="4">대학생</option>
</select>

<input type="text" name="gi_edu_value[]" inputmode="numeric">

 

<select name="gi_edu_type[]">

<option value="">학력선택</option>
<option value="2">취학전아동</option>
<option value="3" >초중고생</option>
<option value="4">대학생</option>
</select>

<input type="text" name="gi_edu_value[]" inputmode="numeric">

 

<select name="gi_edu_type[]">

<option value="">학력선택</option>
<option value="2">취학전아동</option>
<option value="3" >초중고생</option>
<option value="4">대학생</option>
</select>

<input type="text" name="gi_edu_value[]" inputmode="numeric">

 

</form>

 

<script>

function submits(f) {
    for (var i = 0; i< 20; i++) { 
        if (f.gi_edu_type[i].value != "") {
            if(f.gi_edu_type[i].value == 4){
                if(f.gi_edu_value[i].value > 9000000) {
                    alert("대학생 교육비는 최대 900만원까지 입력가능합니다.");
                    f.gi_edu_value[i].focus();
                    return false;
                }
            } else if(f.gi_edu_type[i].value == 3){
                if(f.gi_edu_value[i].value > 3000000) {
                    alert("초중고 교육비는 최대 300만원까지 입력가능합니다.");
                    f.gi_edu_value[i].focus();
                    return false;
                }
            } else if(f.gi_edu_type[i].value == 2){
                if(f.gi_edu_value[i].value > 3000000) {
                    alert("취학전 아동 교육비는 최대 300만원까지 입력가능합니다.");
                    f.gi_edu_value[i].focus();
                    return false;
                }
            }
        }
    }

}

</script>

소스를 보시면 각 학력을 선택하고

그에따른 금액을 입력하려 합니다.

동적으로 추가되는 폼이라서 배열로 해야하는데요

이게 안되네요 ㅠ.ㅠ

혹시 아시는분 계시면 부탁 드립니다.

답변 2개 / 댓글 2개

채택된 답변
+20 포인트

배열이라 f.gi_edu_type 이 아니라 f.elements['gi_edu_type[]'] 로 접근하셔야 할것 같은데,

기존 코드를 안고치고 하려면 아래처럼 하시면 될듯합니다.

Copy
function submits(f) {
        f.gi_edu_type = f.elements['gi_edu_type[]'];     // 추가
        f.gi_edu_value = f.elements['gi_edu_value[]'];   // 추가
        for (var i = 0; i< 20; i++) {

            ....

답변에 대한 댓글 1개

너무 감사합니다 ^^
혹시 같은 조건에 더 좋은 코드가 있다면 시간나실때 알려주세용~

뭐를 기대하시고 뭐가 안되시는건지요? 저렇게 하면..

thumb-2009992035_1555643143.5465_730x392.png

테스트 페이지 만들어서 해보니..이렇게 포스팅 됩니다. (폼에 입력 다 하고 확인 눌렀을 때 $_POST 값)

답변에 대한 댓글 1개

답변주셔서 감사합니다.
다시 질문글을 보니 설명이 많이 부족하네요

해당부분에서 select 값에따른 input 값의 한도를 주려한것입니다.
두 값모두 배열[]로 입력되는 상태라 select 값이 2일경우에 input 값이 3000000 을 초과하여 입력하지 못하도록 하려 합니다.

답변을 작성하려면 로그인이 필요합니다.