当前位置: 代码迷 >> PHP >> 下拉联动有关问题
  详细解决方案

下拉联动有关问题

热度:168   发布时间:2016-04-28 19:02:37.0
下拉联动问题
省和市的联动,省市的内容都是从数据库里取出来的,
现在是选择了省,对应的市出来之后,省又回到最初的值,选择的值保存不住,因为画面又刷新了。
有什么办法能保存住省,或者不用画面刷新?

下面是部分代码


<p class="Fld">
<label class="label" for="state">省</label>
<span class="control">
<select id="state" class="req1" name="Prefecture"  onchange="getCitySubmit();">
  <!--{html_options options=$provinceList}-->
        </select></span>
</p>

<p class="Fld">
<label class="label" for="city">市</label>
<span class="control">
<select id="city" class="req1" name="City" >
            <!--{html_options options=$cityList}-->
        </select></span>
</p>


//初期,绑定省
 public function action()
    {

     $retArr=array();
     //省取得
     $retArr=$this->qaModel->getProvince();

     if(count($retArr)>0)
     {
     foreach ($retArr as $key => $i)
     {
        $provinceList[$i["PROVINCE_KEY"]] = $i["PROVINCE_NAME"];
     }
     }
     //取得したデータを設定  
     $this->_smarty->assign("provinceList", $provinceList);

     // お問い合わせ画面を表示する 这步显示画面submit.html
     $this->_smarty->render($this->_language."/submit");
    }

//联动,绑定市
 public function cityAction()
    {
     $province_key=$this->_context->query("province_key", "");

     $this->log->info($province_key);


     $retArr=array();
     //省取得
     $retArr=$this->qaModel->getCity($province_key);

     if(count($retArr)>0)
     {
     foreach ($retArr as $key => $i)
     {
     $cityLis[$i["CITY_KEY"]] = $i["CITY_NAME"];
     }
     }

     //取得したデータを設定
     $this->_smarty->assign("cityList", $cityLis);

     // お問い合わせ画面を表示する  这步再回到初期,这样的话省就重新绑定了
     $this->action();
    }


------解决方案--------------------
你这乱七八糟的日文是什么网站?日本的? 日本用都道府县 市区町村。
建议用ajax做。这样速度快点 不用每次刷新。

<select name="mst_state_id" id="mst_state_id" onchange="Linkage(this.value,'mst_city_id')">
   <option value="0">都道府県</option>
   {html_options options=$res.m_states selected=$res.mst_state_id
------解决方案--------------------
default:""}
</select>
<select name="mst_city_id" id="mst_city_id">
    <option value="0">市区町村</option>
    {html_options options=$res.m_city selected=$res.mst_city_id
------解决方案--------------------
default:""}
</select>

function Linkage(obj,id) {
    var param = {};
    param.mst_state_id = obj;
    $.ajax({
        type   : "POST"
        , url  : " php"
        , data : $.param(param)
        , dateType : "xml"
        , success  : function(xml) {
            var selects = $("select[id="+id+"]");
            $(selects)[0].length=0;
            $(selects)[0].options[0]=new Option("市区町村","0");
            $("category", xml).each(function(){
                var id   = $("id", this).text();
                var name = $("name", this).text();
                $(selects)[0].options.add(new Option(name, id));
            });
        }
    });
}

url  : "php" 这里是接受都道府县的id的php 注意路径
这个php 最后输出

$str = "";
  相关解决方案