当前位置 :

美化或替换javascript的alert窗口

jQuery-Impromptu是一款基于jquey的alert弹出效果。可以在需要弹出的地方调用插件的弹出方法实现漂亮的效果,也可以基于此插件覆盖掉系统的alert方法,实现不改变代码之内用alert也能生效,重写代码如下:

(function() {
window.alert = function($msg) {
        $.prompt($msg,{
            title: "操作提示",
            buttons: { }
        })
};
})();

  展示效果:
78C97228-1503-4AA1-A5D5-7CF6E31288F5.png
点击查看插件描述

outlook.com风格的loading效果

outlook邮箱的loading效果是在顶部从左到右飘过的的点,很多windows phone手机上也是这种loading效果,经过一番搜索终于找到了,此插件依赖jquery原来的效果没有做展示位置的绝对定位处理,经过改进后基本达到效果,具体效果如下图:
loading.png

另外loader()方法还有几个参数可以配置:

  1. boxes: Number of boxes (or bullets) that are engaged in the indicator (defaults to 5).
  2. dimensions: The dimensions (height and width) for each box or bullet (defaults to 6).
  3. radius: value for the border-radius css option assigned to each box. Make this 0 and have boxes 4. instead of bullets (defaults to 25).
  4. interval: The amount of time it takes for the indicator to complete one round (defaults to 3 seconds).
    color: color of the boxes of bullets (defaults to white).

点击这里下载

php去除数组内所有值前后的空白字符串

采用array_map方法,在不使用递归的情况下去除数组或多维数组所有值前后的空白字符串,具体实现如下:

function WrapperTrim($var)
{
    function walk($var)
    {
        if (!is_array($var))
            return trim($var);

        return array_map(__FUNCTION__, $var);
    };
     return walk($var);

}

Yii统一去掉$_GET和$_POST值里的前后空白字符

在项目实践中,对于用户输入的每个字段的内容使用trim方法是一个基本的处理,内容前后的空白字串通常是无用的。在yii框架中可以在配置文件中定义:onBeginRequest,在每次请求时调用一个方法对输入的值统一trim,具体方法如下:

'onBeginRequest' => array('CommonUtils', 'trimPostGet'),

CommonUtils中的trimPostGet方法定义如下:

 /**
 * 统一trim输入内容
 */
public static function trimPostGet()
{
    if(!empty($_POST))
    array_walk_recursive($_POST, function (&$val) { $val = trim($val); });
    if(!empty($_GET))
    array_walk_recursive($_GET, function (&$val) { $val = trim($val); });
}

Yii批量插入数据

批量插入数据库和单条循环插入相比,性能更好。对于mysql数据库需要构建以下批量插入语句:

insert into table1 (column1,cloumn2,...) values (c1,c2,...),(d1,d2,d3,...);

对于上面的sql语句,可以通过循环要插入的数据然后拼接成符合条件的sql语句实现,但这种方法要求对每一个来自用户的输入都要手动过滤,否则很容易出现sql注入漏洞。Yiiframework从1.1.4起提供了对于批量查询sql语句的构造方法:

https://github.com/yiisoft/yii/blob/1.1.15/framework/db/schema/CDbCommandBuilder.php#L262
具体使用方法:

 foreach($rows as $row)
 {
    $data[] = array(
                      'user_id'=>$user_id,
                      'create_time'=>$time,
                      'tag'=>$tag
                    );
 }
 $command = Yii::app()->db->commandBuilder->createMultipleInsertCommand(Post::model()->tableName(),$data);
 $command->execute();

 具体说明可以参考CDbCommandBuilder的说明手册。