jquery函数用全字替换缩写

时间:2012-10-31 10:51:29

标签: php jquery replace textarea ckeditor

我的jquery脚本遇到了一些麻烦。

这是代码

<script>

 $(function()
{

    $('#suivi').keyup(function(e){
    var code = e.which ? e.which : e.keyCode;
    var input = this.value;
    console.log(input);
          if (input == "ABS") {
       this.value = "Le débiteur est absent, nous le relançons par courrier. Nous agendons également une visite domiciliaire s'il s'avérait que ce dernier restait sans réponse."

    };

});

});



</script>
麻烦的是它用全字替换了一个缩写,例如tel将被电话取代。问题是这个代码有效,当且仅当textarea为空时,例如,如果我写,我引用:“给我电话”没有引号,它不会改变单词,但如果我只写tel,它工作,我想这样做,我可以添加许多缩写,而不仅仅是在开头,

我有办法做到吗?

此外我经常使用ckeditor,当使用Ckeditor插入textarea时,它将无法正常工作。

有没有办法可以改变它?

非常感谢任何帮助。

亲切的问候。

SP。

2 个答案:

答案 0 :(得分:3)

我建议使用一个对象将首字母缩略词/缩写映射到给定的短语,如果检测到缩写,则将该缩写替换为完整的短语:

var abbreviations = {
    'PSI': 'pounds per square inch',
    'TLA': 'three-letter acronym'
};

function abbrReplace(el, abbrs) {
    if (!el || !abbrs) {
        return false;
    }
    else {
        var val = el.value,
            words = val.split(/\s/);
        for (var i = 0, len = words.length; i<len; i++) {
            if (abbrs[words[i]]) {
                words[i] = abbrs[words[i]];
            }
        }
        return words.join(' ');
    }
}
document.getElementById('test').onblur = function(){
    this.value = abbrReplace(this, abbreviations);
};

JS Fiddle demo

但是,这是区分大小写的,因此,在上文中,缩写tla不会匹配,只有TLA会匹配。

答案 1 :(得分:0)

$(function() {
    $('#suivi').on('keyup', function(e){
       var code = e.which; //normalized by jQuery
       if (this.value.toLowerCase().indexOf("abs")!=-1) {
           this.value = this.value.replace(/ABS/g, 'Anal Bitch Slapper');
       }
    });
});

不要替换整个值,用字符串中的任何内容替换abbreviaton,并且你需要一个标准的正则表达式进行全局替换,上面的字符串替换只是替换了第一次出现。