そのため、任意の文字を入力できる入力フィールドを作成しようとしていますが、入力された値を小文字にして、英数字以外の文字をすべて削除し、「。」を残します。スペースの代わりに。
たとえば、次のように入力すると、
地球は70%の水、-!*#$ ^^&30%
のLAnd出力は次のようになります:
earth.is.70.water.30.land
jQueryでマスキングせずにこれを行う方法はありますか?
そのため、任意の文字を入力できる入力フィールドを作成しようとしていますが、入力された値を小文字にして、英数字以外の文字をすべて削除し、「。」を残します。スペースの代わりに。
たとえば、次のように入力すると、
地球は70%の水、-!*#$ ^^&30%
のLAnd出力は次のようになります:
earth.is.70.water.30.land
jQueryでマスキングせずにこれを行う方法はありますか?
これは実際には 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, ".");
$(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;
}
});
});
イベントにバインドし、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;
}
});