$ smarty - Как динамически изменить значение опции окна выбора на лету - PullRequest
2 голосов
/ 23 сентября 2011

Я новичок в smarty, так что прошу прощения за мою невиновность: oops:

Я следую коду, оставленному предыдущим программистом, и у меня возникла эта проблема при динамическом изменении значений поля выбора в зависимости от выбранного значения другого поля выбора.

Итак, вот ситуация:

У меня есть выпадающий список с именем "Раздел" и еще один с именем "Подраздел".

Что мне нужно придумать, так это то, что когда я выбираю раздел, значения подраздела тоже меняются и отображаются только те подразделы, которые находятся под выбранным разделом.

вот симуляция проблемы с помощью javascript:

<html> 
<head> 
<title>Box changing demo</title> 
    <script type="text/javascript"> 

        var items = new Array(); 

        items[0] = new Array("Dog", "Cat", "Pig"); 
        items[1] = new Array("Andromeda", "Boötes", "Cepheus"); 
        items[2] = new Array("Mercury", "Venus", "Earth"); 
        items[3] = new Array("BMW", "Audi", "Bugatti"); 

        function changeItems(){; 
            num=document.changer.section.options[document.changer.section.selectedIndex].value; 
            document.changer.subsection.options.length = 0; 
            for(i=0; i<items[num].length; i++){ 
                document.changer.subsection.options[i] = new Option(items[num][i], items[num][i]); 
            } 
        } 

    </script> 
</head> 
<body> 

    <form name="changer"> 
         <select name="section" onchange="changeItems();"> 
              <option value="0">Animals</option> 
              <option value="1">Constelations</option> 
              <option value="2">Planets</option> 
              <option value="3">Cars</option> 
         </select> 

         <select name="subsection"> 
          <!--<option>tgntgn</option> -->
         </select> 
    </form> 

</body> 
</html>

Это то, что мне нужно сделать с Smarty.

Кто-нибудь?

Спасибо за вашу помощь.

Ответы [ 3 ]

1 голос
/ 23 сентября 2011

Вы не можете сделать это в Smarty, потому что это невозможно сделать только с помощью HTML.Вы должны использовать Javascript для этого.Посмотрите на http://www.texotela.co.uk/code/jquery/select/ - это кажется достаточно простым для реализации.

0 голосов
/ 28 ноября 2013

попробуйте что-то вроде:

{html_options name=section options=$options selected=$index 
    onchange="changeItems();"}

, где $ options и $ index (индекс выбранной опции в теге select) назначены в php:

<?php
...
$smarty = new Smarty ();
...
$smarty->assign ( 'index', $some_php_val );
$smarty->assign ( 'options', $some_php_array );
...
?>

для проверки дополнительной информации:

http://www.smarty.net/docsv2/en/language.function.html.options.tpl http://www.smarty.net/forums/viewtopic.php?p=53422

0 голосов
/ 05 октября 2013

Надеюсь, что это ответ на ваш вопрос

<!--JAVASCRIPT-->
<!--CREATE DROPBOX WHEN SEC1 IS SELECTED-->
<script>
var section= document.getElementById("section").value;
if(section == SEC1){
document.getElementById("subSEC").innerHTML='
  <select name="subsection" type="text" id="subsection">
  <option value=""></option>
  <option value="Sub1">Sub1</option>
  <option value="Sub2">Sub2</option>
  <option value="Sub3">Sub3</option>
  </select>"
';
}


</script>
<!--HTML MARKUP-->

<select name="section" type="text" id="section">
      <option value=""></option>
      <option value="SEC1">SEC1</option>
      <option value="SEC2">SEC2</option>
      <option value="SEC3">SEC3</option>
      </select>

<!--SPACE TO PLACE DROPBOX FROM JAVASCRIPT-->
<span id="subSEC">

</span>
...