如何复制文本字段的值,删除符号和空格并放置连字符?

时间:2014-04-10 19:55:26

标签: jquery

我有两个文本字段,一个名为business_name,另一个名为slug。我有它,以便当一个人在商业名称中键入指定的字段时,该值被复制到slug字段中。我还希望进入slug字段的值除去所有内容,但保留字母和数字,并用hypen替换空格。这就是我目前的情况,firebug不会告诉我任何错误,所以我不知道我做错了什么

$(document).ready(function() {
        var business_name = '';
    $("#business_name").bind('keypress', function() {
        business_name = $(this).val();
        business_name.replace('/[a-zA-Z0-9]\s+/g', '-').toLowerCase();
        $("#slug").val(business_name);

    });
});

2 个答案:

答案 0 :(得分:0)

这里有两个问题 - 当你打电话给替换时,请不要在正则表达式周围加上引号。你想要一些形式:

business_name.replace(/[a-zA-Z0-9]\s+/g, '-')

此外,它不会替换原始字符串中的值 - 它返回带有替换文本的新字符串。因此,当您设置#slug的值时,您仍然在查看原始值。

你所拥有的正则表达式也没有达到你想要的效果,所以我把它更改为首先删除任何不是字母,数字或空格的东西,然后将任何空格转换为破折号

您可以将子弹线更改为

        $("#slug").val(business_name.toLowerCase().replace(/![a-z0-9\s]/g, '').replace(/\s/, '-'));

我把你的小提琴分开了here

答案 1 :(得分:0)

第一个问题:string.replace没有变异字符串,它会创建一个新字符串。

第二个问题:你的正则表达式会匹配所有字符,你只想匹配任何不是字母或数字或空格的东西并将其删除。

第三个问题:正则表达式不是字符串。它们不需要用引号括起来

类似的东西:

business_name = business_name.replace(/\s+/g,'-').toLowerCase();             // replace spaces
business_name = business_name.replace(/[^a-zA-Z0-9-]/g,'');                 // remove other characters

http://jsfiddle.net/ghw6c/4/