【问题标题】:jQuery: Generate valid tag of stringjQuery:生成字符串的有效标签
【发布时间】:2011-03-06 02:45:58
【问题描述】:

我正在寻找一种方法来从给定的字符串中生成一个有效的标签(只有 a-z 和减号作为有效字符的字符串)。

让我给你看一下代码:

<p>
    <label>Tag Title *:</label>
    <input type="text" class="tag_title" name="input_tag_title" value="" />
</p>
<p>
    <label>Tag (A-Z; -) *:</label>
    <input type="text" class="tag" name="input_tag" value="" />
</p>

标签标题失去焦点后,标签输入框应填充有效字符串。它应该只包含字符 a-z(无论大小写)和一个减号。但这只有在标签输入为空时才会发生。如果不为空,则对输入的字符串(在标签输入字段中)进行无效字符检查,并自动替换所有无效字符(将所有非字母字符替换为减号)。

我试过了

$(".tag_title").blur(
    function()
    {
        $(".tag").text = this.value.replace(/[^a-z\-]/g, '_');
    }
);

但这不起作用。有什么提示吗?

谢谢!

【问题讨论】:

    标签: jquery string replace


    【解决方案1】:

    您需要使用.val(...) 来更改文本输入的值。

    我还对接收到blur 事件的.tag_title 元素(包装在一个jQuery 对象中)使用.val() 来获取用户键入的值。

    测试一下: http://jsfiddle.net/8mqzd/

    $(".tag_title").blur(
        function() {
            var $tag = $('.tag');
            if( $tag.val() == "" ) {
                $tag.val( $(this).val().replace(/[^a-z\-]/g, '-') );
            }
        }
    );​
    

    http://api.jquery.com/val/

    编辑: 只在.tag 元素为空时替换(按要求)。

    编辑:正如 Nick 指出的那样,您使用 this.value 来检索接收到 blur 的元素的值就可以了。我将其更改为使用 jQuery 的.val(),但请不要认为您必须使用.val()。 :o)

    【讨论】:

    • +1 - 请注意$(this).val()this.value 适合&lt;input type="text" /&gt;,第二个实际上要快得多;)
    • @Nick - 但是……那是……不是 jQuery! ;o) 你是对的。我确实喜欢使用本机 API 的想法,因为它很简单。不知道为什么我选择改变它。我会做一个笔记。感谢您的 + 。 :o)
    【解决方案2】:

    一个问题是输入元素需要 jQuery val() 函数

    $(".tag").text = this.value.replace(/[^a-z\-]/g, '_'); 
    

    可能是这样的:

    var t = $('.tag');
    t.val(t.val().replace(/[^a-z\-]/g, '_')); 
    

    编辑:感谢 digitalFresh,我已经审查并做出了更改。

    【讨论】:

    • this 无法使用,因为该函数正在全局执行。使用$(".tag").text($(".tag").text().replace(/[^a-z\-]/g, '_'));。 (也许)
    • @digitalFresh - 不知道这个想法是从哪里来的,它肯定不会在全球范围内执行,this 指的是 &lt;input type="text" class="tag_title" name="input_tag_title" value="" /&gt; 在它的 blur 处理程序中的元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 2019-07-18
    • 2012-12-29
    • 2015-02-23
    • 1970-01-01
    相关资源
    最近更新 更多