2

我有脚本,人们把他们的名字和脚本根据他们真实姓名的第一个字符生成不同的名字。

    var firstNm = document.getElementById("Ime").value.toUpperCase();

我在 65-90(AZ) 排列的那些新名字。获取第一个字母的过程是这样的:

var firstNum = firstNm.charCodeAt(0) - 65;
    if (firstNum < 0 || firstNum > 25) {
        validName = false;

但在此之前,当用户键入 ŠIME 时,我想将所有字符(例如“ŠIME”)更改为“SIME”,我尝试了这个,但它似乎不起作用

$(function() { 
  $('Ime').keyup(function() {
    $(this).val($(this).val().replace(/Š/g, "S"));
  });
});
4

2 回答 2

0

您可以在https://github.com/mplatt/fold-to-ascii-js找到我的 Apache Lucene ASCII 折叠过滤器的 JavaScript 端口

它将不在前 127 个 ASCII 字符中的 Unicode 字符转换为它们的 ASCII 等效字符。

它处理您发布的字符(以及更多)。

于 2014-01-07T19:52:59.803 回答
0

抱歉各位,感谢您的帮助,我通过添加这样的功能解决了自己的问题

function zamjenaZnakovaI(){
var tekst = document.getElementById("Ime").value;
tekst.indexOf( 'Č' ) == 0? tekst = tekst.replace( 'Č', 'C' ) : 
tekst.indexOf( 'č' ) == 0? tekst = tekst.replace( 'č', 'c' ) : 
tekst.indexOf( 'Ć' ) == 0? tekst = tekst.replace( 'Ć', 'C' ) : 
tekst.indexOf( 'ć' ) == 0? tekst = tekst.replace( 'ć', 'c' ) : 
tekst.indexOf( 'Š' ) == 0? tekst = tekst.replace( 'Š', 'S' ) : 
tekst.indexOf( 'š' ) == 0? tekst = tekst.replace( 'š', 's' ) : 
tekst.indexOf( 'Ž' ) == 0? tekst = tekst.replace( 'Ž', 'Z' ) :
tekst.indexOf( 'ž' ) == 0? tekst = tekst.replace( 'ž', 'z' ) :
tekst.indexOf( 'Đ' ) == 0? tekst = tekst.replace( 'Đ', 'D' ) :
tekst.indexOf( 'đ' ) == 0? tekst = tekst.replace( 'đ', 'd' ) :
tekst;
document.getElementById("Ime").value = tekst;
}

因为我只需要替换字符串中的第一个字母,而不是第五个或第四个

我在 keyup 上调用了函数

<input type="text" id="Ime" size="30"  onkeyup="zamjenaZnakovaI()"/>

也许有更好的解决方案,但这一个有效。因此,如果其他人需要类似的东西,这是可以做到的一种方法。

干杯,D.

于 2012-12-15T19:44:34.347 回答