4

そのため、任意の文字を入力できる入力フィールドを作成しようとしていますが、入力された値を小文字にして、英数字以外の文字をすべて削除し、「。」を残します。スペースの代わりに。

たとえば、次のように入力すると、
地球は70%の水、-!*#$ ^^&30%

のLAnd出力は次のようになります:
earth.is.70.water.30.land

jQueryでマスキングせずにこれを行う方法はありますか?

4

3 に答える 3

12

これは実際には jQuery の質問ではなく、単純な Javascript で実行できます。最初にテキストを小文字にし、次にスペースをピリオドに置き換え、英数字以外を削除する必要があります。

var myStr = "Earth is 70% water, -!*#$^^ & 30% LAnd"
myStr=myStr.toLowerCase();
myStr=myStr.replace(/ /g,".");
myStr=myStr.replace(/[^a-zA-Z0-9\.]+/g,"");

この回答は、ユーザーが入力したように、複数のスペースをピリオドとして残します。回答に一致させたい場合 (実際には複数のスペースを 1 つに凝縮します)、追加の置換を追加します。

myStr=myStr.replace(/\.+/g, ".");
于 2011-07-19T01:04:21.893 に答える
1
$(document).ready(function () {
        $(".ui-widget-content .ui-autocomplete-input").keydown(function (event) {


            if (event.shiftKey) {
                return false;
            }
                            if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 97 && event.keyCode <= 122) || (event.keyCode >= 65 && event.keyCode <= 90)) 
                            {
                                return true;
                            }
                            else {
                                return false;
                            }
        });
    });
于 2012-05-21T14:10:41.663 に答える
0

イベントにバインドし、keyPress英数字以外の文字をキャンセルします。

サンプルコード:

$("#target").keypress(function(event) { 
    var key = event.which;
    var keychar = String.fromCharCode(key).toLowerCase();
    // allow control keys
    if ((key==null) || (key==0) || (key==8) || 
        (key==9) || (key==13) || (key==27) )
         return true;

    if ((("abcdefghijklmnopqrstuvwxyz0123456789").indexOf(keychar) == -1)) 
       event.preventDefault();   
       return false;
    }   
});
于 2011-07-19T01:00:37.677 に答える