$ smarty - 如何动态更改选择框选项值

时间:2011-09-23 07:04:47

标签: smarty

我是聪明的新手所以请原谅我的清白:oops:

我正在关注前一个程序员留下的代码,我在根据另一个选择框的选定值动态更改选择框的值时遇到此问题。

所以情况如下:

我下拉命名为“Section”,另一个命名为“Subsection”。

我需要提出的是,当我选择一个部分时,子部分的值也会改变,只显示选定部分下的子部分。

这是一个问题的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>

这就是我需要做的聪明才智。

任何人

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

你不能在Smarty中这样做,因为它只能用HTML完成。你必须使用Javascript。看看http://www.texotela.co.uk/code/jquery/select/ - 它似乎很容易实现。

答案 1 :(得分:0)

希望这回答你的问题

<!--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>

答案 2 :(得分:0)

尝试类似:

{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