jQuery转义空格

时间:2012-03-10 09:48:02

标签: php javascript jquery escaping

https://github.com/fnagel/jquery-ui的selectmenu中,我为每个选项设置了标题,并显示为图标。工作正常除了文件名包含空格的图标。如果文件名与African Union.png

类似,则不显示图标

jquery:

        $('select.flags').selectmenu({
            icons: [
                {find: '.icon'}
            ],
            bgImage: function() {
                return 'url(' + $(this).attr("title") + ')';
            }
        });

HTML:

<option value="African Union.png" class="icon" title="/img/icons/flags/African Union.png" >African Union</option>

如果我无法在jQuery中运行它 - 如何使用php转义空格? str_replace是唯一的选择吗?

3 个答案:

答案 0 :(得分:1)

使用urlencode。首先,您不能在URL中包含空格。

$filename = "African Union.png";
$url = urlencode($filename);
$html_safe_url = htmlspecialchars($url);

echo "<option value='$html_safe_url' class='icon' title='/img/icons/flags/$html_safe_url'>African Union</option>

答案 1 :(得分:1)

URLs in CSS可以不加引号,也可以单引号或双引号引用。如果没有引用,就像你的情况一样,你需要转义某些字符:

  

出现在不带引号的URI中的某些字符,例如括号,空格字符,单引号(')和双引号("),必须使用反斜杠进行转义,以便生成URI value是一个URI令牌:“\(”,“\)”。

所以:

'url(' + $(this).attr("title").replace(/(?=[()\s'"])/g, '\\') + ')'

或者您将网址放在引号中,最好是双引号plain single quotes are allowed in URLs

'url("' + $(this).attr("title") + '")'

答案 2 :(得分:0)

试试这个

$("#text_box_id").change(function() {
var name = $(this).val();
var dname_without_space = $("#text_box_id").val().replace(/ /g, "");
var name_without_special_char =      dname_without_space.replace(/[^a-zA-Z 0-9]+/g, "");
$(this).attr("value", name_without_special_char );
});

它将删除空白区域和特殊字符。 看这篇文章

http://patelmilap.wordpress.com/2011/08/17/using-jquery-remove-space-special-characters-while-typing/