学好php,坚持自己的路,我的网店:http://shop34276988.taobao.com(对直销不信任者没必要访问),想了解直销请访问www.wanmei100.cn

2个列表菜单自动提交以及默认选定问题

上一篇 / 下一篇  2008-03-05 16:35:30 / 个人分类:js与jquery学习笔记与总结

效果是这样的,首先是选择游戏项目自动出现相对应的游戏世界,选择游戏项目和游戏世界后就自动提交,然后将自己选中的的作为默认值,例如选择travian游戏,无刷新显示相对的游戏服务器比如sn1,cn1,sn7(从数据库里查找的),我选择travian,sn1之后列表菜单自动提交,然后自动将travian,sn1分别作为游戏项目和游戏世界的默认值。

需要用到ajax+jquery+js

tpl文件代码

{#$delcache#}
<scrīpt language="Javascrīpt" type="text/javascrīpt">
<!--
/*
*author:heaven
*desc  :ajax+js+mysql+php+json+smarty无刷新游戏和游戏世界联动菜单

* 说明:将指定下拉列表的选项值清空
*
* @param {String || Object]} selectObj 目标下拉选框的名称或对象,必须
*/
//动态加载setCity函数,显示游戏服务器
function addLoadEvent(func) {
 var ōldonload = window.onload;
 if (typeof window.onload != 'function') {
  window.onload = func;
 } else {
  window.onload = function() {
    oldonload();
    func();
  }
 }
}

window.onload = function() {

   addLoadEvent(setCity(document.getElementById("province").value));

}

function removeOptions(selectObj)
{
  // alert(1234);
    if (typeof selectObj != 'object')
    {
         selectObj = document.getElementById(selectObj);
    }

    // 原有选项计数
    var len = selectObj.options.length;

    for (var i=0; i < len; i++)
    {
        // 移除当前选项
         selectObj.options[0] = null;
    }
}

/*
* 说明:设置传入的选项值到指定的下拉列表中
*
* @param {String || Object]} selectObj 目标下拉选框的名称或对象,必须
* @param {Array} optionList 选项值设置 格式:[{txt:'北京', val:'010'}, {txt:'上海', val:'020'}] ,必须
* @param {String} firstOption 第一个选项值,如:“请选择”,可选,值为空
* @param {String} selected 默认选中值,可选
*/
function setSelectOption(selectObj, optionList, firstOption, selected)
{
  //alert(selectObj);
 // alert(optionList);
 // alert(firstOption);
  var temp=document.getElementById(selectObj);
 // alert(temp);
    if (typeof selectObj != 'object')
    {
         selectObj = temp;
    }
   // alert(selectObj);
    // 清空选项
    removeOptions(selectObj);
   
    // 选项计数
    var start = 0;
     
    // 如果需要添加第一个选项
    if (firstOption)
    {
         selectObj.options[0] = new Option(firstOption,'');

        // 选项计数从 1 开始
         start ++;
    }

    var len = optionList.length;
    for (var i=0; i < len; i++)
    {
        // 设置 option
         selectObj.options[start] = new Option(optionList[i].txt, optionList[i].val);

  if (selectObj.options[start].value=='{# $smarty.get.city #}')
            {
                selectObj.options[start].selected="selected";
            }

         start++;
    }

}

//-->
</scrīpt>


 <scrīpt language="Javascrīpt" type="text/javascrīpt">
 var xmlhttp;

   try
   {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   }
    catch(e1)
    {
     try
     {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
   
     }
     catch(e2)
     {
      try
      {
       xmlhttp = new XMLHttpRequest();
      }
      catch(e3)
      {
       alert("您的浏览器不支持Ajax的运行!");
      }
     }
    }
 var action;
 var cityArr =[];
 var province;
  function setCity(province)
  {  
   
 var url="handler/ajax.php?game_id="+province+"&action=getserver";
 xmlhttp.open("GET",url,true);
 //xmlhttp.onreadystatechange=update(province);
 xmlhttp.onreadystatechange =function(){
 //var cityArr =[];
 //alert(xmlhttp.readyState);
    if (xmlhttp.readyState == 4 && xmlhttp.status==200)
    {       var cityArr = [];

   cityArr[province]=xmlhttp.responseText;
   arr=eval(cityArr[province]);
  setSelectOption('city',arr,'-请选择游戏世界-');
    
    }
}
 xmlhttp.send(null);

 
  }
 
  </scrīpt>

  <input type="hidden" name="module" value="{# $modulevalue #}" />
  <select name="province" id="province" ōnchange="if(this.value != '') setCity(this.options[this.selectedIndex].value);">
   <option value="">-请选择游戏项目-</option>
  {# section name="game_select" loop=$game_loop #}
  {# if $game_loop[game_select].g_id eq $checkgid or $game_loop[game_select].g_id eq  $smarty.get.province #}
<option value="{#$game_loop[game_select].g_id#}" selected="selected">{#$game_loop[game_select].g_game#}</option>
{# else #}
<option value="{#$game_loop[game_select].g_id#}">{#$game_loop[game_select].g_game#}</option>
{# /if #}
  {# /section #}
  </select>
 {# if $servervalue!="" && $checkgid!="" #}
 <select name="city" id="city" ōnchange="game_lists(this.value)">
 {# section name="deafaultser" loop=$deafaultrow #}
 {# if $deafaultrow[deafaultser].server_id eq $servervalue  or $deafaultrow[deafaultser].server_id eq $smarty.get.city #}
<option value="{# $deafaultrow[deafaultser].server_id #}" selected="selected">{# $deafaultrow[deafaultser].server_name #}</option>
{# else #}
<option value="{# $deafaultrow[deafaultser].server_id #}">{# $deafaultrow[deafaultser].server_name #}</option>

{# /if #}
{# /section #}
 </select>
 {# else #}
  <select name="city" id="city">
 <option value="">请选择游戏世界</option>
 </select>
 {# /if #}


<scrīpt>
(function($) {

game_lists = function(serid)
{
  var gameid=document.getElementById("province").value;
 
 location.href = "?module={# $modulevalue #}&province=" +gameid+"&city="+serid;
}

})(jQuery);
</scrīpt>

 

自动提交部分靠jquery实现:

在游戏世界加上<select name="city" id="city" ōnchange="game_lists(this.value)">

<scrīpt>
(function($) {

game_lists = function(serid)
{
  var gameid=document.getElementById("province").value;
 
 location.href = "?module={# $modulevalue #}&province=" +gameid+"&city="+serid;
}

})(jQuery);
</scrīpt>

 

附上默认值:

游戏菜单

  {# if $game_loop[game_select].g_id eq $checkgid or $game_loop[game_select].g_id eq  $smarty.get.province #}

游戏世界菜单麻烦点:

    var len = optionList.length;
    for (var i=0; i < len; i++)
    {
        // 设置 option
         selectObj.options[start] = new Option(optionList[i].txt, optionList[i].val);

  if (selectObj.options[start].value=='{# $smarty.get.city #}')
            {
                selectObj.options[start].selected="selected";
            }

         start++;
    }


TAG: 列表菜单 自动提交

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar