• 邮政编码联动地址


    // 用的ajax加载,ajax没做兼容封装,所以不兼容ie6,联动后会有颜色动画
    
     // code:
    
    <!DOCTYPE HTML>
    <html lang="en-US">
    <head>
        <meta charset="UTF-8">
        <script src="ADS.js"></script>
        <script src="myLogger.js"></script>
        <title></title>
    </head>
    <body>
    <select name="postalCode" id="postalCode">
        <option value="518049">518049</option>
        <option value="510000">510000</option>
        <option value="0">0</option>
    </select>
    <br>
    <input id="street" type="text">
    <input id="city" type="text">
    <input id="province" type="text">
    <script>
        function isPostalCode(s) {
            return (s.length === 6);
        }
    
        function FadeColor(from, to, callback, duration, framesPerSec) {
    
            this.from = from;
            this.to = to;
            this.callback = callback;
    
            // 以秒表示的渐变效果持续时间
            this.duration = duration || 1;
            // 在给定持续时间内动画的帧数
            this.framesPerSec = framesPerSec || this.duration * 15;
    
        }
    
        // setTimeout()的包装函数
        // 用于基于帧数计算延迟时间
        FadeColor.prototype.doTimeout = function (color, frame) {
            var that = this;
            setTimeout(function () {
                try {
                    that.callback(color);
                } catch (e) {
                    // 对异常进行调试
                    ADS.log.write(e);
                }
            }, (that.duration * 1000 / that.framesPerSec) * frame);
        };
    
        FadeColor.prototype.init = function () {
            var r, g, b;
            var frame = 1;
    
            // 在第0帧设置渐变的开始颜色
            this.doTimeout('rgb(' + this.from.r + ',' + this.from.g + ',' + this.from.b + ')', 0);
    
            // 计算两帧之间RGB值的改变量
            while (frame < this.framesPerSec + 1) {
                // 不断接近目标的值
                r = Math.ceil(this.from.r * ((this.framesPerSec - frame) / this.framesPerSec)
                        + this.to.r * (frame / this.framesPerSec));
                g = Math.ceil(this.from.g * ((this.framesPerSec - frame) / this.framesPerSec)
                        + this.to.g * (frame / this.framesPerSec));
                b = Math.ceil(this.from.b * ((this.framesPerSec - frame) / this.framesPerSec)
                        + this.to.b * (frame / this.framesPerSec));
    
                // 为这一阵调用延时函数
                this.doTimeout('rgb(' + r + ',' + g + ',' + b + ')', frame);
    
                frame++;
    
            }
        };
    
        ADS.addEvent(window, 'load', function () {
            var postalCode = ADS.$('postalCode');
            var a = function (s) {
                var a1 = new FadeColor({
                    // 起始颜色
                    r: 0,
                    g: 255,
                    b: 0
                }, {
                    // 结束颜色
                    r: 255,
                    g: 255,
                    b: 255
                }, function (color) {
                    // 将颜色应用到元素中
                    ADS.setStyle(s, {
                        'background-color': color
                    });
                });
                return a1.init();
            };
    
            ADS.addEvent(postalCode, 'change', function () {
                var newPostalCode = this.value;
                if (!isPostalCode(newPostalCode)) {
                    return;
                }
    
                var req = new XMLHttpRequest();
                req.open('POST', 'serve.js?postalCode=' + newPostalCode, true);
                req.onreadystatechange = function () {
                    if (req.readyState === 4) {
                        if (req.status >= 200 && req.status < 300 || req.status === 304) {
                            eval(req.responseText);
                            if (ADS.$('street').value !== street) {
                                ADS.$('street').value = street;
                                a('street');
                            }
                            if (ADS.$('city').value !== city) {
                                ADS.$('city').value = city;
                                a('city');
                            }
                            if (ADS.$('province').value !== province) {
                                ADS.$('province').value = province;
                                a('province');
                            }
                        }
    
                    }
                };
                req.send();
            });
        });
    </script>
    </body>
    </html> 
    
    
     // serve.js:
    
    var street,city,province;
    if(newPostalCode == '518049'){
    	street = '123 Somewhere';
    	city = 'Ottawa';
    	province = 'Ontario';
    } else {
    	street = 'asdasd';
    	city = 'asdasd';
    	province = 'Oasdasd';
    }
    

      

  • 相关阅读:
    idea jsp无法加载<c:foreach>循环遍历数据
    java POI读取Excel文件
    Javaweb中请求的资源[/Servlet]不可用解决方案
    大作业第一阶段冲刺(一)
    hive中sql左外连接查询列值为null
    关于ECharts在jsp页面无法显示的问题
    echarts通过ajax实现数据加载
    读书笔记
    解决:[Err] 1064
    idea启动Tomcat报错Artifact testdemo1:war exploded: Error during artifact deployment. See server log for details.问题解决
  • 原文地址:https://www.cnblogs.com/webFrontDev/p/2820389.html
Copyright © 2020-2023  润新知