为所有div使用一个onchange javascript函数

时间:2015-02-12 21:54:43

标签: javascript jquery html

我有多个<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> ???

非常感谢提前!

3 个答案:

答案 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:&lt;check&gt;

此外,您可以在没有任何Javascript的情况下勾选:&#x2713;