JavaScript来通过他的等同替换缩写符号(Javascript for replacing a

2019-08-02 03:54发布

我遇到了一些麻烦,一个JavaScript。

其实我在那是abreviations和疗法相当于我的数据库多条记录,

例如,代替电话=>电话等...

所以我有这个功能

$('#tags').keyup(function(e){
    var code = e.which ? e.which : e.keyCode;
     console.log(code);
    if (code == 'tel'){
        var input = this.value;
        input = input.substr(0, input.length -1);
        console.log(input);
        input += 'tel';
        this.value = input;        
    }

});

Actualy这不起作用麻烦的是,我没有在JavaScript控制台奥比的失误。

帮助Anykind将非常感激。

亲切的问候。

SP。

Answer 1:

这应该工作:

$('#tags').keyup(function(e){
    var code = e.which ? e.which : e.keyCode;
    var input = this.value;
    if (input.indexOf('tel') != -1) {
       this.value = this.value.replace(/\btel\b/gi,'telephone');

    }

});

这里是一个小提琴



Answer 2:

当使用keyup()事件处理程序只返回按键的键码。 例如的x的结果在E = 88。

使用$("#tags").val()来获取输入元素的值。



Answer 3:

keyCodewhich属性不返回一个字符串,甚至单个字符。 它返回一个代表,是由客户端击中关键中的关键代码 。 如果你想获得相应的字符: String.fromCharCode(e.which || e.keyCode);
如果用户打在a键,例如,键码将是97String.fromCharCode(97)返回a

如果你想知道天气或不元素的当前值包含缩写符号: tel ,你需要做的是这样的:

$('#tags').keyup(function(e)
{
    this.value = this.value.replace(/\btel\b/gi,'telephone');
});

这是未经测试, 很可能需要一些更多的工作,但据我所知,你要替换所有出现的tel通过telephone 。 我用的表达/\btel\b/替换所有子tel ,只要它们之前和之后字-边界处(以避免更换字的一部分)。
不就是一个字符串和一个破折号年底都被认为是字边界了。 如果我想输入television ,我最终会打字telephoneevision 。 为了避免这种情况,你需要一个稍微复杂的表情。 这里有一个例子如何从治疗划线为界避免JS,刚工作就可以把字符串结尾进去,太

更新

也许这表达是不太我想的那么简单,所以这里就是我建议你使用:

this.value = this.value.replace(/(?:(\-?\b))tel(?:(\b\-?.))/gi,function(all,b1,b2)
{
    if (b1 === '-' || b2.charAt(0) === '-')
    {//dash, don't replace
        return all;
    }//replace
    return b1 + 'telephone' + b2;
});

输入: 我需要一个电话,很快 ==> 我需要一个电话,很快
我需要一个电话 ==> 我需要一个电话 (如果用户仍然打字,不用更换,他可能被输入望远镜,更换提交或模糊)
我想预订今晚宿舍 ==> 我要预订今晚宿舍
访问特拉维夫 ==> 访问特拉维夫



Answer 4:

当使用按键这样的code变量将包含按字符的字符代码 。 像预期的“电话”字符的不是字符串。 你可以使用onkeyup / onchange事件,并检查输入元素的VAL(),并使用replace()的缩写,更改为预期的字符串。

$('#tags').keyup(function(e){

    var elem = $(this);
        var input = elem.val();

        // input = input.substr(0, input.length -1);  // This might not be necessary
        console.log(input);

        // do the replacement
        input = input.replace('tel','telephone');

        elem.val(input);        
    }

});


Answer 5:

使用替代方法,用于字符串替换单词。

例如:

var str = "This is AIR";
var newstr = str.replace("AIR", "All India Radio");
console.log(newstr);


文章来源: Javascript for replacing an abreviation by his equivalent