フォーム内の文字を除外する必要があります。したがって、非常にうまく機能し、さまざまなコンテキストに応じてさまざまなフィルター (変数) を使用するフィルタリング アウト アルゴリズムを実装しました。アクセント付きの文字も多用しなければなりません。
例:
gFilterALPHA1="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'-–àâäéèêëîïôöùüûÀÂÄÉÈÊËÎIÔÖÙÛÜæÆœŒçÇ ";
不思議なことに、文字é
(e 急性) またはè
(e 墓) は考慮されます (そのように見なされます) が、à
(a 墓) などの他の文字は考慮されません。解決策は8進リテラルを使用することであることがわかりました-たとえば、それぞれ墓またはu墓の場合\340
。\371
Q1. é
(e acute) が正常に解析され、他のアクセント付きの文字が正しく解析されない理由についての手がかりはありますか?
Q2. 8 進リテラルの長い文字列を書くのは面倒で、値をチェックしたり追加したりするときにエラーが発生しやすいので、誰かがより良いアイデアを持っているか、回避策を知っていますか?
ありがとう。
OK、これが thg435 が一見すると便利だと考えるコードです。
function jFiltre_Champ(event, NomDuFiltre)
{
var LeChamp=event.target.value; // value est de type ARRAY
switch (NomDuFiltre)
{
case "NUM1":
LeFiltre=gFiltreNUM1;
Msg=gMessageNUM1;
break;
case "ALPHA1":
LeFiltre=gFiltreALPHA1;
Msg=gMessageALPHA1;
break;
case "DATE1":
LeFiltre=gFiltreDATE1;
Msg=gMessageDATE1;
break;
case "ALPHANUM1":
LeFiltre=gFiltreALPHANUM1;
Msg=gMessageALPHANUM1;
break;
case "ALPHANUM2":
LeFiltre=gFiltreALPHANUM2;
Msg=gMessageALPHANUM2;
break;
}
Longueur=LeFiltre.length;
for (i=0; i<LeChamp.length; i++)
{
leCar = LeChamp.charAt(i);
for (j = 0; j < Longueur; j++)
{
if (leCar==LeFiltre.charAt(j)) break;
}
if (j==Longueur)
{
alert(Msg);
/*Cf doc. pour l'algorithme de la méthode slice*/
document.getElementById(event.target.id).value=event.target.value.slice("0", i);
break;
}
}
}
これは英語版です:((2)に関して)
function jform_input_filter(event, filterName)
{
var current_input = event.target.value; // the value is an array
switch (filterName)
{
case "NUM1":
current_filter = gFilterNUM1;
Msg = gMessageNUM1;
break;
case "ALPHA1":
current_filter = gFilterALPHA1;
Msg = gMessageALPHA1;
break;
case "DATE1":
current_filter = gFilterDATE1;
Msg = gMessageDATE1;
break;
case "ALPHANUM1":
current_filter = gFilterALPHANUM1;
Msg = gMessageALPHANUM1;
break;
case "ALPHANUM2":
current_filter = gFilterALPHANUM2;
Msg = gMessageALPHANUM2;
break;
}
length = current_filter.length;
for (i = 0; i < current_input.length; i++)
{
leCar = current_input.charAt(i);
for (j = 0; j < length; j++)
{
if (leCar==current_filter.charAt(j)) break;
}
if (j == length)
{
alert(Msg);
/*Cf doc. pour l'algorithme de la méthode slice*/
document.getElementById(event.target.id).value=event.target.value.slice("0", i);
break;
}
}
コメント:
- 個人的には、このコードが元の質問に答えるのに役立つとは思いません。
- 変数とコメントはフランス語であるため、読みにくい場合があります。
- この関数は、HTML フォーム内の「onchange」イベントに関連付けられています。
- 「g」変数 (gFiltreALPHANUM2 など) は、関数からアクセスできるように、同じ .js ファイル内の別の場所で定義された広範囲のベクトルです。