stx에 여분필드4개의 값을 모두 전달하는 방법

stx에 여분필드4개의 값을 모두 전달하는 방법

QA

stx에 여분필드4개의 값을 모두 전달하는 방법

본문

메인화면에서 특정게시판을 검색하려고 합니다.

현재상황은 sfl은 wr_1, wr_41, wr_2, wr_3  여분필드이고 여기서 선택된 값을 

name=stx로 보내서 and 검색을 하도록 해놨습니다.

각각의 값들을 하나씩만 검색하면 잘 검색됩니다.

그러나 소스를 보시면 4가지 값 모두 다 값을 선택할 경우

모두 name=stx 로 보내지고 있어서

여러개를 체크하면 맨지막에 지정한 값만 stx에 적용되고 있는 상황입니다. 

 

따라서 하고자 하는것은

여분필드값들을 name=stx로 보내면서 값을 다른이름들로 규정하고 마지막에 

name=stx 폼에 대입하라고  마르스컴퍼니 님께서 아래처럼 힌트를 주셨는데 

제가 많이 부족하여 적용을 못하고 있어서 다시한번

도움 요청드려봅니다. 

 

알려주신 코드


//wr_1[] 라디오 버튼의 선택된 값 추출 
//wr_41[] 라디오 버턴의 선택된 값 추출 
//stx 텍스트박스에 반영 
//으로 하면 될 것 같습니다. 
 
val1 =  $("input[name='wr_1[]']").val(); 
val2 =  $("input[name='wr_41[]']").val(); 
 
$('input[name=stx]').val(val1 + ' ' + val2);

 

 

 

 

wr_1값


<input type="checkbox" name="wr_1[]" class="wr_1" value='서울' <?php if(strpos($_GET['stx'], "서울") !== false) echo 'checked'; ?>> 서울 
        <input type="checkbox" name="wr_1[]" class="wr_1" value='경기' <?php if(strpos($_GET['stx'], "경기") !== false) echo 'checked'; ?>> 경기
        <input type="checkbox" name="wr_1[]" class="wr_1" value='인천' <?php if(strpos($_GET['stx'], "인천") !== false) echo 'checked'; ?>> 인천
 
<script>
$(document).ready(function(){
 
    $(".wr_1").change(function(){
            $(".wr_1").prop("checked"); {                
            var chk = $("input[name='wr_1[]']:checked").map(function() {
                return $(this).val();
            }).get().join(" ");
            $('input[name=stx]').attr('value',chk);
        }
        
    });
});
 
</script>
 

 

wr_41값


<input type="checkbox" name="wr_41[]" class="wr_41" value='월' <?php if(strpos($_GET['stx'], "월") !== false) echo 'checked'; ?>> 월 
        <input type="checkbox" name="wr_41[]" class="wr_41" value='화' <?php if(strpos($_GET['stx'], "화") !== false) echo 'checked'; ?>> 화
        <input type="checkbox" name="wr_41[]" class="wr_41" value='수' <?php if(strpos($_GET['stx'], "수") !== false) echo 'checked'; ?>> 수
 
<script>
$(document).ready(function(){
 
    $(".wr_41").change(function(){
            $(".wr_41").prop("checked"); {                
            var chk = $("input[name='wr_41[]']:checked").map(function() {
                return $(this).val();
            }).get().join(" ");
            $('input[name=stx]').attr('value',chk);
        }
        
    });
});
 
</script>

 

wr_2값


        <input type="radio" name="wr_2" value='5건'> 5건
        <input type="radio" name="wr_2" value='10건'> 10건
        <input type="radio" name="wr_2" value='15건'> 15건
        <input type="radio" name="wr_2" value='20건'> 20건
        <script>
$(document).ready(function(){
        $('input:radio[name=wr_2]:input[value="<?=$_GET[wr_2]?>"]').attr("checked", true); 
        $("input[name='wr_2']").change(function(){
        $("input[name='stx']").val( $(this).val() );
       });
});
        </script>
 

 

wr_3값


        <input type="radio" name="wr_3" value='100박스'> 100박스
        <input type="radio" name="wr_3" value='200박스'> 200박스
        <input type="radio" name="wr_3" value='300박스'> 300박스
        <input type="radio" name="wr_3" value='400박스'> 400박스
        <input type="radio" name="wr_3" value='500박스'> 500박스
        <script>
$(document).ready(function(){
        $('input:radio[name=wr_3]:input[value="<?=$_GET[wr_3]?>"]').attr("checked", true);
        $("input[name='wr_3']").change(function(){
        $("input[name='stx']").val( $(this).val() );
       });
});
        </script>
 

 

검색버튼 부분

 


        <input name="stx" class="stx" maxlength="15" itemname="검색어" value='<?=stripslashes($stx)?>' >
        <input type="submit" value="검색" class="btn_submit" >
  <input type="hidden" name="sop" value="and">
  <input type="hidden" name="sfl" value="wr_1||wr_41||wr_2||wr_3">

이 질문에 댓글 쓰기 :

답변 1

체크한 값들을 합쳐서 여러개의 여분필드에서 검색하고 싶다는거죠?

저렇게 검색할 필드가 많은 경우에는 검색할 필드명 따로 검색어 따로 넘겨서

bbs/list.php에서 코드를 별도로 만들어야 정상적인 프로그래밍이 될 것입니다

---------------------

그누보드 소스코드를 변경하지않고 그대로 사용하도록 만드는 것은 별로 좋은 코드가 아닙니다만

하여튼 아래처럼 하세요

sfl도 무조건 wr_1||wr_41||wr_2||wr_3 <--이것처럼 고정할 것이 아니라

체크된 필드만 검색할 필드로 만들어주면 그나마 조금 위안이(?) 됩니다. ㅎ

체크박스 하나 라디오 하나만 검색어와 검색필드 만드는 코드를 만들어 드리겟습니다

나머지 두개도 동일한 방법으로 만들어 넣으면 됩니다

 

1. 부분별로 들어있는 자바스크립트는 모두 삭제 하세요

   저런 복잡한 코드는 필요 없습니다

2. submit버튼은 submit 전에 submit 함수를 호출하도록 고치세요

<input type="button" value="검색" class="btn_submit" onclick="sch_submit()">

 

3. submit 함수

<script>
function sch_submit(){
 sfl = []; stx = [];

  $('.wr_1:checked').each( function(){
    stx.push($(this).val());
  });
   if(stx[0]) sfl.push('wr_1');


  if($(':radio[name="wr_2"]').is(":checked")){ //------ wr_2 라디오가 체크 된 것이 잇으면
    stx.push( $(':radio[name="wr_2"]:checked').val() );
     sfl.push('wr_2');
  }


 stx_join = stx.join(' ');
 sfl_join = sfl.join('||');

$('input[name="sfl"]').val(sfl_join);
$('input[name="stx"]').val(stx_join);

 

document.fsearch.submit();

}
</script>

 

 

 

 

 

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

회원로그인

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