[英]Jquery when keypress in input need autocomplete English letter on number
我想將字母替換為數字,因為它們是在<input type="text">
框中鍵入的。
目前,我使用以下代碼:
function Auto(str)
{
var search = new Array(
"q","w","e","r","t","y","u","i","o","p"
);
var replace = new Array(
"1","2","3","4","5","6","7","8","9","0"
);
return str.replace(search, replace);
}
//我需要在find_str中進行查找,但是我不知道如何...
$("#find").on('keypress',function(){
find_str = $("#find").val();
alert (Auto(find_str));
});
請告訴我如何在find_str中創建查找信以及如何編寫此代碼?
PS:alert()僅用於測試。
replace
不做數組。 有多種選擇,例如多次替換,但音譯似乎不錯:
var map = {q: '1', w: '2', e: '3', r: '4', t: '5', y: '6', u: '7', i: '8', o: '9', p: '0'};
var r = '';
for(var i = 0; i < str.length; i++) {
r += map[str.charAt(i)] || str.charAt(i);
}
return r;
另請注意,您可能會遇到一些焦點問題,這對於用戶而言確實很煩人,因此請盡可能避免此類事情。
replace
將正則表達式(或將轉換為正則表達式的字符串)作為第一個參數,並將字符串用於替換匹配項或用於計算替換項的函數。
因此,您將使用以下代碼:
var map = {q:'1', w:'2', e:'3', r:'4', t:'5', y:'6', u:'7', i:'8', o:'9', p:'0'};
var keys = "[";
for (var key in map)
keys += key.replace(/[\]-]/, "\\$&");
keys += "]";
var regex = new RegExp(keys, "g") // /[qwertyuiop]/g
function auto(str) {
return str.replace(regex, function(match) {
return map[match]; // the respective number
});
}
$("#find").on('keyup', function(){
alert( auto( this.value ));
});
如果確實需要使用數組,那么當然也可以這樣做。
var search = ["q","w","e","r","t","y","u","i","o","p"],
replace = ["1","2","3","4","5","6","7","8","9","0"];
var map = {};
for (var i=0; i<search.length && i<replace.length; i++)
map[ search[i] ] = replace[i];
var regex = new RegExp("["+search.join("").replace(/[\]-]/g, "\\$&")+"]", "g");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.