replace只为jquery插件替换1个char

时间:2013-09-18 14:04:06

标签: javascript jquery

我正在尝试构建一个使用regexp替换字符的小插件。如果我在文本框中删除了多个字符并且模糊,它只会删除该字符。它没有“镜像”文本框中的值,并且看起来具有当前值。

(function ($) {
    $.fn.friendlyUrl = function (destinationID) {
        return this.blur(function () {
            var title = $(this).val();

            var url = title
                    .replace(/[åä]/g, "a")
                    .replace(/[ÅÄ]/g, "A")
                    .replace(/ö/g, "o")
                    .replace(/Ö/g, "O")
                    .replace(/[^a-zA-Z0-9]/g, "-")
                    .replace(/^-+/, "")
                    .replace(/-+$/, "")
                    .replace(/-+/g, "-")
                    .toLowerCase();

            $(destinationID).val(url);
        });
    };
})(jQuery);

我用它来称呼它:

$("#PageName").friendlyUrl("#Url");

这里可能有什么问题?

2 个答案:

答案 0 :(得分:1)

我没有看到url在任何地方使用过,所以在我看来你正试图这样做

$(destinationID).val(url);

答案 1 :(得分:1)

我做了一些修改。

假设这是输入url的输入:

<input type="text" id="PageName"/>

插件代码:

(function ($) {
    $.fn.friendlyUrl = function () {
        return this.blur(function () {
            var title = $(this).val();

            var url = title
                    .replace(/[åä]/g, "a")
                    .replace(/[ÅÄ]/g, "A")
                    .replace(/ö/g, "o")
                    .replace(/Ö/g, "O")
                    .replace(/[^a-zA-Z0-9]/g, "-")
                    .replace(/^-+/g, "")
                    .replace(/-+$/g, "")
                    .replace(/-+/g, "-")
                    .toLowerCase();

            $(this).val(url);
        });
    };
})(jQuery);

和电话:

$(document).ready(function(){
    $("#PageName").friendlyUrl();
});

你真的不需要在这里传递id

尝试this fiddle