我遇到了一些麻烦,一个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。
这应该工作:
$('#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');
}
});
这里是一个小提琴
当使用keyup()
事件处理程序只返回按键的键码。 例如的x的结果在E = 88。
使用$("#tags").val()
来获取输入元素的值。
该keyCode
或which
属性不返回一个字符串,甚至单个字符。 它返回一个代表,是由客户端击中关键中的关键代码 。 如果你想获得相应的字符: String.fromCharCode(e.which || e.keyCode);
。
如果用户打在a
键,例如,键码将是97
, String.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;
});
输入: 我需要一个电话,很快 ==> 我需要一个电话,很快
我需要一个电话 ==> 我需要一个电话 (如果用户仍然打字,不用更换,他可能被输入望远镜,更换提交或模糊)
我想预订今晚宿舍 ==> 我要预订今晚宿舍
访问特拉维夫 ==> 访问特拉维夫
当使用按键这样的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);
}
});
使用替代方法,用于字符串替换单词。
例如:
var str = "This is AIR";
var newstr = str.replace("AIR", "All India Radio");
console.log(newstr);