Tôi đang sử dụng tra cứu dựa trên AJAX cho tên mà người dùng tìm kiếm trong một hộp văn bản.Sử dụng JavaScript để thực hiện các kết quả khớp văn bản có/không có các ký tự có dấu
Tôi giả định rằng tất cả các tên trong cơ sở dữ liệu sẽ được chuyển thành bảng chữ cái châu Âu (nghĩa là không có chữ Kirin, Nhật Bản, Trung Quốc). Tuy nhiên, tên sẽ vẫn chứa các ký tự có dấu, chẳng hạn như ç, ê và thậm chí là č và ć.
Một tìm kiếm đơn giản như "Micic" sẽ không khớp với "Mičić" mặc dù - và kỳ vọng của người dùng là nó sẽ.
Tra cứu AJAX sử dụng cụm từ thông dụng để xác định đối sánh. Tôi đã sửa đổi so sánh cụm từ thông dụng bằng cách sử dụng hàm này trong một nỗ lực để khớp với nhiều ký tự có dấu trọng âm hơn. Tuy nhiên, đó là một chút vụng về vì nó không tính đến tất cả các nhân vật.
function makeComp (input)
{
input = input.toLowerCase();
var output = '';
for (var i = 0; i < input.length; i ++)
{
if (input.charAt (i) == 'a')
output = output + '[aàáâãäåæ]'
else if (input.charAt (i) == 'c')
output = output + '[cç]';
else if (input.charAt (i) == 'e')
output = output + '[eèéêëæ]';
else if (input.charAt (i) == 'i')
output = output + '[iìíîï]';
else if (input.charAt (i) == 'n')
output = output + '[nñ]';
else if (input.charAt (i) == 'o')
output = output + '[oòóôõöø]';
else if (input.charAt (i) == 's')
output = output + '[sß]';
else if (input.charAt (i) == 'u')
output = output + '[uùúûü]';
else if (input.charAt (i) == 'y')
output = output + '[yÿ]'
else
output = output + input.charAt (i);
}
return output;
}
Ngoài chức năng thay thế như thế này, có cách nào tốt hơn không? Có lẽ để "deaccent" chuỗi được so sánh?
Cảm ơn mã, tôi đã sử dụng chức năng của bạn để thay thế các nguyên âm có dấu trong văn bản nhập và làm việc tốt. – IgniteCoders