for문으로 만든 input 폼 jquery로 제어

for문으로 만든 input 폼 jquery로 제어

QA

for문으로 만든 input 폼 jquery로 제어

본문

안녕하세요.

 

php로 for문을 만들어 동일한 input 폼을 다수 생성했습니다.

DB에 저장된 값을 가져오기에 생성되는 input 폼은 경우에 따라 상이합니다.

우선 코드를 한 번 보시면,


<?php
   $sql = " select * from company_item_option where mb_id='{$member['mb_id']}' ";
   $result = sql_query($sql);
   for ($i=0; $row=sql_fetch_array($result); $i++) {
?>
     <tr>
       <td>
          <input type="text" name="value_1[<?php echo $i;?>]" id="value_1" value="<?php echo $row['value_1'];?>">
       </td>
       <td>
          <input type="text" name="value_2[<?php echo $i;?>]" id="value_2" value="<?php echo $row['value_2'];?>">
       </td>
       <td>
          <input type="text" name="price[<?php echo $i;?>]" id="price" value="<?php echo $row['price'];?>">
       </td>
       <td>
          <input type="text" name="quantity[<?php echo $i;?>]" id="quantity" value="<?php echo $row['quantity'];?>">
       </td>
     </tr>
<?php } ?>
... 이하 코드 생략 

 

이런 형태로 DB 내용을 가져와 for문을 돌려 input 폼을 생성하는 구조입니다.

그런데 이렇게 생성된 폼을 jquery로 제어하는 과정에서 잘 안되는 부분이 있어

이렇게 질문을 올리게 되었습니다.

 


$(document).ready(function() {
  $("#option_update").on("click", function() {
    if ($("#price").val() < (-<?=$item_price?>)*0.5 || $("#price").val() > <?=$item_price?>*0.5) {
        alert ("추가금액이 범위를 넘었습니다.");
        $(this).focus();
        return false;
    }
  });
});

 

예를 들어 위와 같은 코드로 id가 price인 폼을 제어하려고 했더니

폼이 x개인 경우(1개 이상) 가장 위에 첫번째 폼만 제어되고 나머지는 제어가 되지 않네요.

id는 중복이 허용되지 않는다고 해서 class로 변경해봤지만 마찬가지였습니다.

 

제가 원리를 모르고 있어서 그런건지 모르겠는데 어떻게 해결해야할지 감이 안오네요.

아시는 분의 소중한 답변 기다리겠습니다.

 

감사합니다.

 

이 질문에 댓글 쓰기 :

답변 1

<script>

$(document).ready(function() {

  $("#option_update").on("click", function() {

      $("input[name^=price]").each( function() { 

        if ($(this).val() < (-<?=$item_price?>)*0.5 || $(this).val() > <?=$item_price?>*0.5) {

            alert ("추가금액이 범위를 넘었습니다.");

            $(this).focus();

            return false;

        }

    });

  });

});

</script>

소중한 답변 감사드립니다.
적용해보니 잘 됩니다. 정말 감사드립니다.

그런데 하나 문제가 발생한 것이..
alert은 뜨는데 확인을 누르면 그 다음의 focus와 return false가 안 먹히고
다음 단계가 실행되어 버리네요. (실행되면 안되고 break 되야 하는데..)

그리고 추가적으로 input[name^=price]에서 ^=  <- 이 연산자가 무엇을 뜻하는지
알 수 있을까요? 종종 보이던데 도저히 무슨 뜻인지를 모르겠습니다.

감사합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 1,020
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT