0

我的 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 将替换为电话。问题是,当且仅当文本区域为空时,此代码才有效,例如,如果我写并引用:“给我电话”而不带引号,它不会改变单词,但如果我只写电话,它工作,我想这样做我可以添加许多缩写,而不仅仅是在开头,

有没有办法我可以做到这一点?

而且我经常使用ckeditor,当用ckeditor插入textarea时,它就不起作用了。

有什么办法可以改变吗?

任何帮助将不胜感激。

亲切的问候。

SP。

4

2 回答 2

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 小提琴演示

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

于 2012-10-31T11:25:03.567 回答
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');
       }
    });
});

不要替换整个值,用它在字符串中代表的任何东西替换缩写,你需要一个标准的正则表达式来全局替换,上面的字符串替换只是替换第一次出现。

于 2012-10-31T11:06:52.580 回答