我有多个<textarea>,有时它们是空的,有时它们是用文本填充的。
我想插入一个简单的文本代码,如"<check>“,它将自动更改为一个检查(\u2713)。
目前,我的代码是这样的:
<textarea name="1-S" onchange="check(this.value)">
<check> //an input written by a user
</textarea>
<textarea name="1-NI" onchange="check(this.value)">
<check> //an input written by a user
</textarea>
<textarea name="1-C" onchange="check(this.value)">
<check> //an input written by a user
</textarea>
(This block of <textarea> gets repeated, but of course, with different name in each one.)
<script type="text/javascript">
function check(str){
var res = str.replace("<check>", "\u2713");
????
}
</script>然后,输出将把<check>替换为实际的检查符号(\u2713)
挑战在于,我不想为每个<textarea>添加ID,然后为每个one编写脚本。那么,有没有办法让我使用这一个脚本来应用于所有的<textarea>?
首先要感谢大家!
发布于 2015-02-13 06:00:30
您可以使用getElementsByTagName方法来创建文本区域标记的数组。
发布于 2015-02-13 06:03:15
是。您可以使用jquery将事件处理程序绑定到某个类型的所有元素。
$('textarea').on('change', function() {
var text = $(this).val();
if (text.match(/\<check\>/)) {
$(this).val(text.replace(/\<check\>/, "\u2713"));
}
});这样做的好处是,您可以从html中删除内联的'onchange‘处理程序,并将验证逻辑严格合并到JavaScript中。
要替换实际的文本区域内容,需要用字符串的结果更新文本区域的值-替换regexp。var text = $(this).val()只是将文本区的内容赋给变量text,而不是对文本区的innerHTML部分的引用。
顺便说一句,如果你想让用户在表单中使用快捷码,最好使用方括号语法,例如[check]。
发布于 2015-02-13 06:03:32
由于您使用的是jQuery:
$("textarea").each(function(index, textarea) {
// do replacement here
});请注意,您需要使用HTML entities将<check>放入文本区域:<check>
此外,您可以在没有任何Javascript的情况下添加复选标记,如:✓
https://stackoverflow.com/questions/28488556
复制相似问题