[英]Replacing accented characters with javascript
在onkeyup上,我想将重音符号替换为非重音。 现在有了这段代码,我什么也没得到。 如果我不给函数this.value
,我得到一个错误的split
。
我想使用此功能通过onkeyup进行更多输入,但始终使用该输入进行写操作。
<input onKeyUp="RemoveAccents(this.value);" type="text" required name="termek_seo" class="product-name" value="<?php echo isset($_POST["termek_seo"])?$_POST["termek_seo"]:""; ?>" />
function RemoveAccents(strAccents)
{
var strAccents = strAccents.split('');
var strAccentsOut = new Array();
var strAccentsLen = strAccents.length;
var accents = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
var accentsOut = "AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz";
for (var y = 0; y < strAccentsLen; y++)
{
if (accents.indexOf(strAccents[y]) != -1)
{
strAccentsOut[y] = accentsOut.substr(accents.indexOf(strAccents[y]), 1);
}
else
{
strAccentsOut[y] = strAccents[y];
}
}
strAccentsOut = strAccentsOut.join('');
return strAccentsOut;
}
更新:
如何在此代码中编写tolowercase?
function RemoveAccents(s)
{
var i = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖŐòóôõöőÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜŰùúûüűÑñŠšŸÿýŽž'.split('');
var o = 'AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUUuuuuuNnSsYyyZz'.split('');
var map = {};
i.forEach(function(el, idx) {map[el] = o[idx]});
return s.replace(/[^A-Za-z0-9]/g, function(ch) { return map[ch] || ch; })
}
就是这样...
function RemoveAccents(strAccents) { var strAccents = strAccents.split(''); var strAccentsOut = new Array(); var strAccentsLen = strAccents.length; var accents = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž'; var accentsOut = "AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz"; for (var y = 0; y < strAccentsLen; y++) { if (accents.indexOf(strAccents[y]) != -1) { strAccentsOut[y] = accentsOut.substr(accents.indexOf(strAccents[y]), 1); } else { strAccentsOut[y] = strAccents[y]; } } strAccentsOut = strAccentsOut.join(''); console.log(strAccentsOut); return strAccentsOut; }
<input onKeyUp="RemoveAccents(this.value);" type="text" required name="termek_seo" class="product-name" value="ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž" />
我用另一个代码解决了这个问题:
function RemoveAccents(s)
{
var i = 'ĂĂĂĂĂĂà åâãäüĂĂĂĂĂĂĹòóôþÜĹĂĂĂĂèÊêÍðĂçĂĂĂĂĂĂŹĂĂŽĂŻĂĂĂĂŰÚúÝߏĂùŠťŸÿýŽŞ+_.:;[]()/*"<> '.split('');
var o = 'AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUUuuuuuNnSsYyyZz---------------'.split('');
var map = {};
i.forEach(function(el, idx) {map[el] = o[idx]});
return s.replace(/[^A-Za-z0-9]/g, function(ch) { return map[ch] || ch; }).toLowerCase();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.