2012-01-05 3 views
0

내 양식에 실제로 쿼리 유형에 따라 즉석에서 mysql db 쿼리를 생성하는 데 도움이되는 드롭 다운 목록이 있습니다. 예 : fetchYourDetails의 드롭 다운에 내 querytype이 있으면 내 이름을 묻는 양식의 텍스트 상자가 나타납니다. 일단 내 이름을 입력하고 을 생성하면을 생성합니다. 쿼리 프레임을 만들고 백그라운드 PHP에서 실행합니다.드롭 다운, jquery, PHP를 기반으로 동적 양식 필드 만들기

이와 같이 나는 약 4/5의 쿼리 유형이 있으며 앞으로 증가 할 가능성이 높습니다. 여기에 현재 구현에 문제가 있습니다.

내가 현재 사용하고있는 것은 드롭 다운과 모든 매개 변수 필드 (숨김)가있는 양식입니다. 자, 내 js에서 onchange() 함수를 사용하여 선택한 드롭 다운 옵션에 따라 특정 매개 변수 행을 표시하고 나머지는 숨 깁니다.

<form> 
    <table> 
     <tr id='dropdown'> 
     <td> 
      <select id='select_options' onchange ="javascript:updateCustomQueryFields();"> 
       <option value='getyourdetails'></option> 
       <option value='getyourbikedetails'></option> 
       <!-- so on --> 
      </select> 
     </td> 
     </tr> 
     <tr style='display:none'> 
     <td> 
      <!-- one field --> 
      <!-- create the generate option --> 
     </td> 
     </tr> 
     <tr style='display:none'> 
     <td> 
      <!-- one field --> 
      <!-- create the generate option --> 
     </td> 
     </tr> 
     <!-- so on --> 
    </table> 
</form> 

내 onchange를 기능은 다음과 같습니다 : 나는 클릭 옵션를 생성 할 때, 지금까지

function updateCustomQueryFields() 
{ 
    val=$('#select_options').val(); 

    //hideallfieldsfirst 

    if(val=='getyourdetails') 
    { 
     //show one field 
    } 
    else if(val=='getyourbikedetails') 
    { 
     //show one field 
    } 
} 

너무 좋아, 내 HTML 코드처럼 보이는 방법

그래서 여기에 쿼리를 실행하고 db에서 데이터를 가져 와서 폼 아래의 결과 div에 표시합니다.

그래서 결과를 표시 할 때 컨트롤러에서 설정 한 매개 변수를 기반으로보기에서 일부 필드를 숨기고 다른 필드를 표시해야합니다. 그래서 if-else 문 시리즈는 더 많은 매개 변수를 추가 할 때 증가 할 것입니다.

매개 변수 필드를 즉석에서 생성하는 메커니즘이 필요합니다. 예를 들어 쿼리 유형이 'getyourdetails'인 경우 이름 필드 만 만들고 나머지는 모든 필드를 제거해야합니다. 백엔드 onchange 기능.

어떻게 jquery를 사용하여 달성 할 수 있습니까? 그리고 내가 원하는 것을 구현하는 것이 적절한 방법론이 될 것인가? 결과를 가져온 후 호출이 컨트롤러에서 반환되면 내 매개 변수 필드를 예상하는 것을 명심해야합니다.

답변

0

귀하의 질문에 대한 확신이 들지는 않지만 귀하의 요청에 대한 제 지식에 의하면 이러한 형태의 양식을 작성하면 removeappend 개의 jQuery 기능을 사용하는 것이 더 바람직하다고 말합니다. 모든 컨트롤을 동적으로 만들 수 있으며 설정 한 ID로 제어 할 수 있습니다. 한 잔의 물을 마시는 것만 큼 쉽습니다! 내 대답이 잘못되면

Remove , Append

저를 수정합니다.