簡體   English   中英

當輸入中的按鍵需要自動完成英文字母時的jQuery

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM