我正在寻找一种从给定字符串中生成有效标记(只有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, '_');
}
);
但这不起作用。任何提示?
谢谢!
答案 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, '-') );
}
}
);
编辑:如果.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,我已经审核并进行了更改。