jQuery:生成字符串的有效标记

时间:2010-06-20 23:54:25

标签: jquery string replace

我正在寻找一种从给定字符串中生成有效标记(只有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-input为空时才会发生这种情况。如果它不为空,则应检查输入的字符串(在标记输入字段中)是否有无效的字符,并自动替换所有无效字符(用缩写替换所有非字母字符)。

我用

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

但这不起作用。任何提示?

谢谢!

2 个答案:

答案 0 :(得分:3)

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

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

测试一下: 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元素为空(按要求),则仅替换它。

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

答案 1 :(得分:0)

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

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

可能是这样的:

var t = $('.tag');
t.val(t.val().replace(/[^a-z\-]/g, '_')); 
编辑:感谢digitalFresh,我已经审核并进行了更改。