【问题标题】:jQuery - field entry - how to duplicate and convert to seo friendly urljQuery - 字段输入 - 如何复制和转换为 seo 友好的 url
【发布时间】:2010-05-31 16:33:48
【问题描述】:

我有两个 HTML 输入字段 articleurl

如何将字段 'article' 条目复制到字段 'url' 到 SEO 友好链接!?

  • url 允许的符号 a-z(大写字母转换为小写字母),
  • url空格符号替换为破折号-
  • url 其他符号被忽略。

需要在article字段中输入

<input type="text" name="article">

url 字段是 jquery 自动生成并由字段 article 值更新

<input type="text" name="url">

【问题讨论】:

    标签: javascript jquery url


    【解决方案1】:

    这应该可行:

    function name_to_url(name) {
        name = name.toLowerCase(); // lowercase
        name = name.replace(/^\s+|\s+$/g, ''); // remove leading and trailing whitespaces
        name = name.replace(/\s+/g, '-'); // convert (continuous) whitespaces to one -
        name = name.replace(/[^a-z-]/g, ''); // remove everything that is not [a-z] or -
        return name;
    }
    

    然后

    $('input[name=article]').blur(function() {
        $('input[name=url]').val(name_to_url($(this).val())); // set value
    });
    

    这会在每次文章字段失去焦点时设置 url 字段中的值。


    它保留名称中已经存在的-。因此,如果您也想删除它们,则必须将name_to_url() 的倒数第二行和倒数第三行更改为:

    name = name.replace(/[^a-z ]/g, ''); // remove everything that is not [a-z] or whitespace
    name = name.replace(/\s+/g, '-'); // convert (continuous) whitespaces to one -
    

    参考:.blur().val().toLowerCase().replace()


    更新:

    我会创建一个新函数,比如说update_URL()

    function update_URL() {
         var value = name_to_url($('input[name=article]').val()) + '-' + $('input[name=year]').val();
         $('input[name=url]').val(value)
    }
    

    然后你可以在任何事件上调用这个函数,例如在keyup():

    $('input[name=article]').keyup(function() {
        update_URL();
    });
    

    【讨论】:

    • 谢谢,菲利克斯克林!它工作得很好!在“文章”发生任何变化后,是否能够更新“url”字段?不仅仅是当它失去焦点时。
    • @Binyamin: 当然,你必须使用keyup() 方法而不是blur() : api.jquery.com/keyup |顺便说一句,您当然可以链接name_to_url 中的方法,例如return name.toLowerCase().replace().replace().replace(),但我将其拆分以进行解释...此外,如果您不希望 url 字段可编辑,请将 HTML 属性 readonly="readonly" 添加到场地。 JS 仍然可以工作。
    • @Felix Kling:非常感谢!我添加了数字和更多支持“[^a-z0-9א-תа-яā-ž-]”的语言。它工作正常,希望它的编码也很好。你知道如何在字段'url'中显示两个字段组合'article'+“-”+'year'(这种方式不起作用 - $('input[name=article + name=year]')! ?
    • @Felix Kling:再次感谢!我将keyup() 更改为keypress(),因此它不会显示Firebug 警告“不应使用keyup 事件的'charCode' 属性。该值没有意义。”
    猜你喜欢
    • 2012-08-16
    • 2016-04-29
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 2018-07-01
    相关资源
    最近更新 更多