我有多个<textarea>
,有时它们是空白的,有时它们会被文字填充。
我想插入一个简单的文本代码,例如&#34; <check>
&#34;它将自动更改为支票(\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,然后为每个{1}编写一个脚本。那么有没有办法让我使用这个脚本来应用于所有<textarea>
???
非常感谢提前!
答案 0 :(得分:0)
您可以使用getElementsByTagName方法创建文本区域标记的数组。
答案 1 :(得分:0)
是。您可以使用jquery将事件处理程序绑定到类型的所有元素。
$('textarea').on('change', function() {
var text = $(this).val();
if (text.match(/\<check\>/)) {
$(this).val(text.replace(/\<check\>/, "\u2713"));
}
});
这样做的好处是你可以从html中删除你的内联'onchange'处理程序,并将你的验证逻辑严格地整合到JavaScript中。
要替换实际的textarea内容,您需要使用String-replace regexp的结果更新textarea的值。 var text = $(this).val()
只是将textarea的内容分配给变量text
,它不是对textarea的innerHTML部分的引用。
如果您希望允许用户在表单中使用短代码,请在旁注中添加方括号语法,例如[check]
。
答案 2 :(得分:0)
因为你正在使用jQuery:
$("textarea").each(function(index, textarea) {
// do replacement here
});
请注意,您需要使用HTML entities将<check>
放入textarea:<check>
此外,您可以在没有任何Javascript的情况下勾选:✓