功能:不用级联效果,自己写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. sqlserver 动态行转列

    DECLARE @SQL VARCHAR(8000)SET @SQL = 'select overcode 'SELECT @SQL = @SQL + ' , max(case header when ...

  2. 什么是ORACLEASM

    最直观的用途:共享一块磁盘,各个服务器做oracleasm即可共享 一.     ASM(自动存储管理)的来由: ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来的一项新功 ...

  3. wireshark_Couldn’t run /usr/sbin/dumpcap in child process: Permission denied

    关于Wireshark出现:Couldn't run /usr/sbin/dumpcap in child process: Permission denied Are you a member of ...

  4. NYOJ题目97兄弟郊游问题

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAr8AAAHxCAIAAADrwUM4AAAgAElEQVR4nO3dLXLjytfH8f8mzLOQYC

  5. 《Thinking in Java》十四章类型信息_习题解

    1~10    Page 318 练习1. 在ToyTest.java中,将Toy的默认构造器注释掉,并解释发生的现象. 书中代码如下(略有改动): package org.cc.foo_008; p ...

  6. Python 实现发送、抄送邮件功能

    发送邮件 问题 在web.py中,如何发送邮件? 解法 在web.py中使用web.sendmail()发送邮件. web.sendmail('cookbook@webpy.org', 'user@e ...

  7. FTP是否可以修改为其它端口?

    对服务器的ftp端口进行了修改,把21端口改了,比如221端口,就这样用221连接的时候,连接登录成功,但打不开目录,为何,总结如下: 1.完成一个FTP的传输过程不仅仅只需要21一个端口,而是2个端 ...

  8. 攻城狮在路上(壹) Hibernate(六)--- 通过Hibernate操纵对象(上)

    一.Hibernate缓存简介: Session接口是Hibernate向应用程序提供的操纵数据接口的最主要接口,它提供了基本的保存.更新.删除和加载Java对象的方法. Session具有一个缓存, ...

  9. php开发(CI框架使用)

    年前接了一个外包项目,要求使用PHP,琢磨来琢磨去,感叹道PHP框架实在是太多了!去知乎搜索一轮,最后决定使用CI, 相关议论如下:https://www.zhihu.com/question/216 ...

  10. windows64系统中mysql64位绿色安装

    将下载压缩包解压到任意目录 配置安装文件: # For advice on how to change settings please see# http://dev.mysql.com/doc/re ...