我必须过滤掉表单中的字符。因此,我实现了一种过滤算法,该算法运行良好,并根据不同的上下文使用不同的过滤器(变量);我也必须大量使用重音字母。
示例:
gFilterALPHA1="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'-–àâäéèêëîïôöùüûÀÂÄÉÈÊËÎIÔÖÙÛÜæÆœŒçÇ ";
奇怪的是,é
(急性)或è
(e grave)被考虑在内(如此看见),而其他如à
(坟墓)则是不。我发现解决方案是使用八进制文件 - 例如\340
或\371
分别用于坟墓或坟墓。
Q1。有关为什么é
(急性)成功解析为什么而其他重音字母不是直接解析的任何线索?
Q2。因为当想要检查或添加值时,编写一长串八进制文字既麻烦又容易出错,是否有人有更好的想法或知道解决方法?
感谢。
好的,这是代码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;
}
}
评论:
答案 0 :(得分:2)
Bergi可能是正确的:您的文件可能是使用错误的编码保存或传送的。将UTF-8视为Unicode字符集的良好支持编码。要测试这个想法,您可以临时调整脚本以将a-with-acute-accent输出到页面中,无论是在字段中还是在文本节点中。在字符串文字中使用逐字字符,而不是八进制转义码。如果它出现乱码,那么角色没有以原始形式进入浏览器,你就遇到了编码问题。
如果确认编码问题,则需要正确保存文件,或调整响应字符编码,这取决于您的特定Web服务器。您可以使用Fiddler找到Web服务器提供的当前编码,并检查Content-Type响应标头。如果Web服务器已经认为您的文件采用正确的编码(最好是指示UTF-8),请检查文本编辑器以确保它以相同的编码保存JavaScript文件。
我写这个作为答案,因为我认为我不能直接对这个问题发表评论。