我的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。
答案 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);
};
但是,这是区分大小写的,因此,在上文中,缩写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,并且你需要一个标准的正则表达式进行全局替换,上面的字符串替换只是替换了第一次出现。