功能:不用级联效果,自己写ajax,从接口读取省份城市数据,实现点击省份显示相应城市。后端根据省份ID,给前端返回城市。

一、DOM结构(套用blade模板)

<div class="controls bui-form-group-select">
   <div class="control-group span10">
      <label class="control-label"><s>*</s>省份:</label>
      <select name="province_id" id="province" data-rules="{required : true}">
        <option value="">请选择省份</option>
        @if(isset($orderInfo['province_id']))  //编辑时
        @foreach ($aProvinceList['aList'] as $key => $value)
        <option value="{{ $value['iAutoID'] }}" @if( $orderInfo['province_id'] ==$value['iAutoID']) selected @endif>{{ $value['sName'] }}</option>
        @endforeach
        @else                               //添加时
        @foreach ($aProvinceList['aList'] as $key => $value)
        <option value="{{ $value['iAutoID'] }}">{{ $value['sName'] }}</option>
        @endforeach
        @endif
      </select>
   </div>
   <div class="control-group span10">
      <label class="control-label"><s>*</s>城市:</label>
      <select name="city_id" id="city" style="margin-left:10px;" data-rules="{required : true}">
        @if(isset($orderInfo['city_id']))
        <option value="{{$orderInfo['city_id']}}" selected>{{$orderInfo['sCity']}}</option>
        @endif
      </select>
   </div>
</div>

二、触发事件

1.如果用Kissy写,格式如下:

Event.on('#province','change', function() {
  var sPro=S.one('#province').val();
    if(sPro){
      IO({
        url: "{{ url('ajax/chinacity/search') }}",
        type: 'POST',
        data: {
          "province_id" : S.one("#province").val()
        },
        success: function(data){
            S.one("#city").html('<option value="">请选择城市</option>');
            S.each(data.data,function(item,i){
                S.one("#city").append("<option value="+item.iAutoID+">"+item.sName+"</option>");
            });
        }
      });
    }
  });

如果用JQuery写,格式如下:

$('#province').change(function() {
    var sPro = $(this).val();
    if (sPro) {
        $.ajax({
            type: 'POST',
            url: "{{ url('ajax/chinacity/search') }}",
            data: {
                "province_id": sPro
            },
            success: function(data) {
                $("#city").html('<option value="">请选择城市</option>');
                $.each(data.data,
                function(item, i) {
                    $("#city").append("<option value=" + item.iAutoID + ">" + item.sName + "</option>");
                });
            }
        });
    }});

“添加页面”和“编辑页面”往往是同一个页面,区别在于后者有值,在“编辑页面”有之前选好的省份和城市。此时会有一个问题,省份不变,只修改城市,城市下拉列表不出现,必须先选择省份,再重新选择城市。于是添加城市的请求,希望在编辑页可以单独下拉城市列表,然而在控制台会看到请求发送了很多次,需要优化。

Ajax实现点击省份显示相应城市的更多相关文章

  1. 11月10日下午 ajax做显示信息以后用ajax、Bootstrp做弹窗显示信息详情

    1.用ajax做弹窗显示信息详情 nation.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...

  2. ajax做显示信息以后用ajax、Bootstrp做弹窗显示信息详情

    1.用ajax做弹窗显示信息详情 nation.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...

  3. js进阶 12-15 jquery如何实现点击button显示列表,点击其它位置隐藏列表

    js进阶 12-15 jquery如何实现点击button显示列表,点击其它位置隐藏列表 一.总结 一句话总结:在button中阻止事件冒泡. 1.如何咋button中阻止事件冒泡(两种方法)? ev ...

  4. 编写Java程序,现要求使用 dom4j 解析 city.xml 文档,实现省份及对应城市的联动特效,效果如图所示

    查看本章节 查看作业目录 需求说明: 现要求使用 dom4j 解析 city.xml 文档,实现省份及对应城市的联动特效,效果如图所示 实现思路: 创建解析 XML 文档类 ParseXML 和窗体类 ...

  5. [WPF]ComboBox.Items为空时,点击不显示下拉列表

    ComboBox.Items为空时,点击后会显示空下拉列表: ComboBox点击显示下拉列表,大概原理为: ComboBox存在ToggleButton控件,默认ToggleButton.IsChe ...

  6. React 点击按钮显示div与隐藏div,并给div传children

    最近做了一个react的点击按钮显示与隐藏div的一个小组件: [筛选]组件FilterButton import React,{Component} from 'react'; import {re ...

  7. Android点击View显示PopupWindow,再次重复点击View关闭PopupWindow

     Android点击View显示PopupWindow,再次重复点击View关闭PopupWindow 这本身是一个看似很简单的问题,但是如果设置不当,就可能导致莫名其妙失效问题.通常在Andro ...

  8. JavaScript网站设计实践(五)编写photos.html页面,实现点击缩略图显示大图的效果

    一.photos.html页面,点击每一张缩略图,就在占位符的位置那里,显示对应的大图. 看到的页面效果是这样的: 1.实现思路 这个功能在之前的JavaScript美术馆那里已经实现了. 首先在页面 ...

  9. 一天JavaScript示例-点击图片显示大图片添加鼠标

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

随机推荐

  1. 【linux】gcc命令

    来源:http://man.linuxde.net/gcc 语法 gcc(选项)(参数) 选项 -o:指定生成的输出文件: -E:仅执行编译预处理: -S:将C代码转换为汇编代码: -wall:显示警 ...

  2. Spetember 5th 2016 Week 37th Monday

    No matter how far you may fly, never forget where you come from. 无论你能飞多远,都别忘了你来自何方. Stay true to you ...

  3. Mysql之复制服务

    Replication[复制]使得数据可以从一个Master服务器上复制到一个或多个Slave上,默认是异步复制,不需要与Master建立永久连接:基于配置,可以作用于所有库,指定的库或库中的某些表. ...

  4. Mysql 数据库无法删除 41 错误

    今天删除Mysql 数据库时候,没法删除,直接报错 41: 方法,进入 mysql的安装目录 我的是:D:\tools\Mysql\V76384-01\mysql-advanced-5.6.25-wi ...

  5. self和parent的用法

    总结 self  , parent 的用法               只能用在类的内部 self  本类  (不要理解成本对象) parent 父类 在引入自身的静态属性/静态方法 以及父类的方法时 ...

  6. tengine-2.1.0 源码安装

    [root@localhost tengine-]# yum update -y [root@localhost tengine-]# yum install gcc gcc-c++ autoconf ...

  7. 【Javascript】IE8兼容 背景图片与a标签的onclick事件

    先说几句牢骚话. 虽然IE8比之IE6.7有很大的进步,但是在执行效率.兼容性上仍然有很多问题.被广大开发者喜爱的平台才是好平台. 可惜多亏当年盗版XP打开中国的计算机市场,IE作为一款捆绑软件仍然在 ...

  8. Delphi面向对象编程

    一.面向对象介绍 OOP是使用独立的对象(包含数据和代码)作为应用程序模块的范例.虽然OOP不能使得代码容易编写,但是它能够使得代码易于维护.将数据和代码结合在一起,能够使定位和修复错误的工作简单化, ...

  9. HDU2296 Ring(AC自动机 DP)

    dp[i][j]表示行走i步到达j的最大值,dps[i][j]表示对应的串 状态转移方程如下: dp[i][chi[j][k]] = min(dp[i - 1][j] + sum[chi[j][k]] ...

  10. 攻城狮在路上(叁)Linux(二十二)--- linux磁盘挂载与卸载 mount umount

    挂载就是将文件系统与目录结合的操作.挂载点就是目录,该目录就是进入分区或文件系统的入口. 一.挂载前的注意事项: 1.单一文件系统不应该被重复挂载在不同的挂载点中. 2.单一目录不应该重复挂载多个文件 ...