Javascript 创建textarea标记后加载脚本

Javascript 创建textarea标记后加载脚本,javascript,jquery,textarea,Javascript,Jquery,Textarea,我正在使用这个脚本,它每秒绑定到所有textarea。我是这样使用它的,因为这些文本区域是动态加载的(在创建页面并加载脚本之后)。我希望有一个脚本,每次创建一个新的textarea时都会执行。我怎么能这么做 我将此脚本用作自定义标题。我无法访问代码的其余部分 function autoCorrect(searchString, replaceString) { $("textarea").keyup(function (e) { // escape some re

我正在使用这个脚本,它每秒绑定到所有textarea。我是这样使用它的,因为这些文本区域是动态加载的(在创建页面并加载脚本之后)。我希望有一个脚本,每次创建一个新的textarea时都会执行。我怎么能这么做

我将此脚本用作自定义标题。我无法访问代码的其余部分

function autoCorrect(searchString, replaceString) {
    $("textarea").keyup(function (e) {    
        // escape some regex chars
        var escapedString = searchString.replace(/([\\.*+?|()\[\]{}])/g, "\\$1");
        // finds current cursor position
        var pos = $(this).prop("selectionStart");
        // this turns the textarea in a string
        var text = $(this).val();
        //only search for strings just typed
        var stringToSearch = text.substring(pos - searchString.length, pos);

        if (new RegExp(escapedString).test(stringToSearch) === true) {
            //if there is a match put the replaceString in the right place
            var newText = text.substring(0, pos - searchString.length) + replaceString + text.substring(pos);
            $(this).val(newText);
            //adjust the cursor position to the new text
            var newpos = pos - searchString.length + replaceString.length;
            this.setSelectionRange(newpos, newpos);
        }
    });
}
setInterval(function(){
    autoCorrect("=>", '⇒');
    autoCorrect("->", "→");
    autoCorrect("+-", "±");
    autoCorrect("<=", "≤");
    autoCorrect(">=", "≥");
    autoCorrect("(c)", "©");
    autoCorrect("(e)", "€");      
    autoCorrect("|__", "⌊");
    autoCorrect("__|", "⌋");
    autoCorrect("|--", "⊢");        
    autoCorrect("|==", "⊨"); 
},1000);
函数自动更正(searchString、replaceString){
$(“textarea”).keyup(函数(e){
//逃避一些正则表达式字符
var escapedString=searchString.replace(/([\\.+?|()\[\]{}])/g,“\\$1”);
//查找当前光标位置
var pos=$(this).prop(“selectionStart”);
//这会将文本区域变成字符串
var text=$(this.val();
//仅搜索刚键入的字符串
var stringToSearch=text.substring(pos-searchString.length,pos);
if(新RegExp(escapedString).test(stringToSearch)==true){
//如果存在匹配项,请将替换字符串放在正确的位置
var newText=text.substring(0,pos-searchString.length)+replaceString+text.substring(pos);
$(this).val(newText);
//将光标位置调整为新文本
var newpos=pos-searchString.length+replaceString.length;
此.setSelectionRange(newpos,newpos);
}
});
}
setInterval(函数(){
自动更正(“=>”,'⇒');
自动更正(“->”,”→");
自动更正(“+-”,“±”);
自动更正(“=”,”≥");
自动更正(“(c)”,“);
自动更正(“(e)”,“€”);
自动更正(“| uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu⌊");
自动更正(“_124;”,”⌋");
自动更正(“|-”,”⊢");        
自动更正(“|==”,“⊨"); 
},1000);

您应该使用委托事件处理程序,它将自动绑定到以后添加到DOM的任何文本区域:

$("body").on("keyup", "textarea", function() {
     // $(this) will be a reference to the current textarea
})
您可能应该对一组定义的值进行自动更正,而不是对计时器上的每个值重复调用

var replaceThis = "=>,->,+-".split(",")
var withThis = "⇒,→,±".split(",")

…然后循环遍历这些值。

作为旁白-您将希望在执行setTimeout的函数中对doautocorrect执行setInterval,而不是无限递归setTimeout!@splig谢谢,我不知道setInterval第一部分工作,我将尝试是否可以让第二部分工作。谢谢!您好,我做这样的事情没什么困难。您能帮我用这个JSFIDLE实现您的第二个想法吗?请忽略此评论。您的意思是:
$(“body”)。在(“keyup”,“textarea”,function(){});