我遇到了一些javascript问题。
事实上,我在我的数据库中有许多记录,这些记录是缩写和等效的,
例如,替换tel =>电话等...
所以我有这个功能
$('#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这不起作用的麻烦是我没有aby错误 在javascript的控制台中。
非常感谢任何帮助。
亲切的问候。
SP。
答案 0 :(得分:7)
这应该有效:
$('#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');
}
});
这是fiddle
答案 1 :(得分:3)
使用keyup()
时,事件处理程序仅返回按下的键的键代码。例如,x导致e = 88。
使用$("#tags").val()
获取输入元素的值。
答案 2 :(得分:3)
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');
});
这是未经测试且很可能需要更多工作,但AFAIK,您希望将所有tel
替换为telephone
。我使用/\btel\b/
的表达式替换了所有子串tel
,前提是它们前面跟着一个单词边界(以避免替换单词的一部分)。
不是字符串和短划线的结尾也被认为是字边界。如果我想输入television
,我最终会输入telephoneevision
。为避免这种情况,您需要稍微复杂的表达式。 here's an example如何避免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;
});
输入:我需要一个电话,快速 ==> 我需要一部电话,快速
我需要一个电话 ==> 我需要一个电话(如果用户仍在打字,不要更换,他可能会输入望远镜,更换提交或模糊)
我想今晚预订宿舍 ==> 我想今晚预订宿舍
访问特拉维夫 ==> 访问特拉维夫
答案 3 :(得分:1)
以这种方式使用按键时,code
变量将包含按下的字符的字符代码。不像预期的'tel'那样的字符串。您可以使用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);
}
});
答案 4 :(得分:0)
使用replace方法替换字符串中的单词。
例如:
var str = "This is AIR";
var newstr = str.replace("AIR", "All India Radio");
console.log(newstr);