2014-01-07 4 views
0

저는 웹 사이트에 PHP, Smarty 및 MySQL을 사용하고 있습니다. 선택 컨트롤이 있습니다. 다음과 같이 대한 코드는 다음과 같이다음 시나리오에서 선택 HTML 컨트롤에서 특정 값을 유지하는 방법은 무엇입니까?

<select name="contact_label" id="set_contact_label"> 
    <option value=""> -- Select label-- </option> 
    {if $enquiries_labels} 
    {foreach from=$enquiries_labels item=label key=key} 
    <option value="{$key}" {if $contact_label == $key} selected="selected" {/if}>{$label}</option> 
    {/foreach} 
    {/if} 
</select> 

상응하는 HTML 출력은 다음과 같습니다

<select name="contact_label" id="contact_label"> 
    <option value=""> -- Select label-- </option> 
    <option value="0" selected="selected">New Enquiry</option> 
    <option value="1" >Retail Enquiry</option> 
    <option value="2" >Feedback</option> 
    <option value="3" >Payment Query</option> 
    <option value="4" >Package Query</option> 
    <option value="5" >Test Query</option> 
</select> 

지금 내 문제는 내가 기본적으로 선택 옵션 --select 라벨 선택을 할 때 조건이 실패하면. if 조건이 충족되면 해당 옵션 값을 선택해야합니다. 이제는 어떤 일이 발생하는지 값이 "새로운 문의"은 if 조건이 실패 할 때 선택 상자에서 선택된 상태로 유지됩니다. 사실 나는 if 조건이 실패 할 때 기본적으로 선택되는 값 - 라벨 선택 -을 원한다. 나는 이것을 달성하기 위해 많은 노력을했지만 성공하지 못했습니다. 아무도이 점에서 나를 도울 수 있습니까?

+0

몰라에서

유식 그것을 할 수 있지만, 그 첫 번째 옵션을 선택 추가 할 경우는 $ enquiries_labels의 경우'와 in_array()'는 $ contact_label을 테스트 할 수 있습니다. 멋지게'{php}'블록이 있다는 것을 알고 있지만 그것을 사용하도록 제안하지 않았습니다. Smarty에서 in_array에 대한 내장 함수를 찾습니다. 또한 자바 스크립트로 이것을 할 수 있습니다. 전체 선택 상자를 파싱하고'selected' 속성이 아닌 경우 첫 번째 옵션에 하나를 추가하십시오. –

답변

0

글쎄, 어쩌면 거기에 더 우아한 방법이 있지만 어쩌면 당신은 요소의 경우 attr을 선택했다면 자바 스크립트를 사용할 수있는 서버 쪽 과부하를 원하지 않기 때문에, 그리고 아무도 - 첫 번째 하나에 추가합니다.

이 overcomplicated 될 수
<script> 
    $(document).ready(function() { 
    var opts = document.getElementById("contact_label").options; 
    var i, len = opts.length; 
    var hasAttr = false; 
     for(i = 0; i < len; i++) { 
      if (opts[i].getAttribute("selected") != null) { 
       hasAttr = i; 
       break; 
      } 
     } 
     if(!hasAttr) { 
      $("select option[value='']").attr("selected","selected"); 
     } 
    }); 
</script> 

, 단지 소품() 또는 ATTR()를 ussing 때문에 selected 속성을 추가 할 것이다, 이런 식으로했는데, 당신은 수동으로 실시 또 다른 하나를 선택하면 파서는이 옵션을 selected 속성을 가지고 생각합니다 새로 고침 후 속성이있는 실제 옵션을 얻지 못합니다.

0

그냥 엄격한 비교 연산자를 사용합니다, 당신은 {html_options}를 사용하여 시도도

{if $contact_label === $key} 

를? 확실하지, 내 선택에 0 인덱스 값을 사용하는 경우는 드뭅니다.하지만 아마 이미 그것을 처리합니다.

0

당신은 PHP 파일에서이 을 시도해야 당신이 필요합니다

$ smarty-> 지정 ('경우 MyArray', $ enquiries_labels을); $ smarty-> assign ('selectedOption', 0); 이제 템플릿

<select name="contact_label" id="set_contact_label"> 
      <option value="0">Please Select label</option> 
      {html_options options=$MyArray selected=$selectedOption} 
     </select> 
+0

html 옵션에서 selectedOption에 대한 배열을 제공 할 수 있습니다. –