[][1]

jQuery本身没有这样一个事件,要实现这个效果,我们首先要先了解javascript中的事件冒泡。

冒泡定义:当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发。这一过程被称为事件冒泡;这个事件从原始元素开始一直冒泡到DOM树的最上层。(摘自网络)

其实之前也用过网上很多select美化插件,但是由于很多事件没有办法自定义,或者一些Bug的原因我无法对原始插件进行扩展。所以还是决定自己写一个。

这个插件其实很早就写好了,只是由于Bug比较多,就没有对外发布过,近来整好有时间,就顺便重新规划了这个插件。个人觉得可用性还是不错的,已经测试过IE6-IE9,FF,Chrome,可能Bug还存在,只是我没有测试出来,希望用过的朋友出现Bug可以Email我。

第一种写法: 指定替换,根据需要替换掉。

$str = str_replace(array(“\r\n”, “\r”, “\n”), “”, $str);

第二种写法: PHP_EOL是php规定的特殊的转义字符,比较推荐使用换行缩进的时候使用

$str = str_replace(PHP_EOL, ‘’, $str);

第三种写法: 正则替换所有[\s]特殊字符,这种方法比较狠,有时候第二种无法达到效果的时候,可以考虑用这个。

$str = preg_replace(“/\s/”,””,$str);

最近做一个文章发布系统,突然发现我的PHP基础只是很薄弱,尤其是保存文章content部分的时候经常出现转义问题。

首先我们需要对POST和GET数据做自动转义过滤,那么我们需要判断服务器是否开启了自动转义,否则我们可能出现重复转义。

if ( ! get_magic_quotes_gpc() ) {
    function clean($data) {
        if (empty($data))
            return $data;
        else
            return is_array($data) ? array_map('clean', $data) : addslashes($data);
        }

    if (!empty($_GET)) {
        $_GET  = clean($_GET);
    }
    if (!empty($_POST)) {
        $_POST = clean($_POST);
    }

    $_COOKIE   = clean($_COOKIE);
    $_REQUEST  = clean($_REQUEST);
}


情况1:  
通过上面的操作我们得到的数据就已经自动转义的

比如POST的text数据: this” is a test  
那么$_POST[‘text’]: this\” is a test  
在入库时候后mysql值会自动去掉转义的符号,而显示 this” is a test  
入库的时候如果再做了一次mysql\_real\_escape_string 则会显示 this\” is a test

也就是说mysql\_real\_escape_string和addslashes只要选择一种使用  
据说mysql\_real\_escape_string会更加安全一些,但是这个函数必须在mysql连接以后才使用。所以大部分源码都采用addslashes。

情况2:  
如果这个时候我们需要保存的是文章关键词,或者文章标题。  
假若填写的POST使用的title为: 为什么1 + 2 > 2 “一种证明方案”  
这里出现了大于号和引号,那么我们就应该在入库的时候将大于号转化成> 双引号转化成"这样读取以后才不会出现html代码。这时候我们就需要使用htmlspecailchars()这个函数。

function escape($data, $quotestyle=ENT_COMPAT) {
    if (is_array($data)) {
        foreach ($data as $key => $value) {
            unset($data[$key]);

            $data[escape($key)] = escape($value);
        }
    } else {
        $data = htmlspecialchars($data, $quotestyle, 'UTF-8');
    }

    return $data;
}


入库后则显示:为什么1 + 2 &gt  2 "一种证明方案"

之前一直以为mailto只能选择邮件地址,由于任务需要添加默认标题,才特地搜索了下,结果发现果然有这个功能。

以下转自:http://www.360doc.com/content/09/0805/14/16915_4684377.shtml

Html中mailto标签是一个非常实用的贴近用户体验的标签,大多情况下人们都在这样使用

[email protected]

这样,当我们点击了[email protected]链接后浏览器会为我们自动选择本地的默认邮件软件,并将mailto标签后[email protected]邮件地址放到邮件软件的发送地址中,少去了我们发送邮件时输入发送地址的烦扰,同时也可以避免输错邮件地址。

其实mailto标签有更实用的使用方法。比如:**加入邮件默认标题,抄送地址,暗送(密件抄送)地址,邮件内容….**

下面说一下详细的使用方法:

**1. 为邮件加入默认标题**

[email protected]

**2. 为邮件加入默认的抄送地址**

[email protected]

**3. 为邮件加入默认暗送(密件抄送)地址**

[email protected]

**4. 为邮件加入默认的内容**

[email protected]

**5. 多个邮件地址**

[email protected]

**6. 来个综合型的:加入默认抄送地址,标题,内容**

[email protected]

由上例可以看出,假如有多个默认值需要添加的话,与邮件地址相连接的字符为”?”,默认值间相连接的符号为”&”。