如何检测在第n位输入的密钥

时间:2018-03-16 17:50:54

标签: jquery

我在这里尝试将Unicode编号转换为正常编号。到目前为止,我已设法将其转换为第一位数。 例如:1 => 1

但是当数字是2位数或更多时,它无法检测到它。

如果有人能指出如何解决这个问题会非常有帮助......

var items = ['०', '१', '२', '३', '४', '५', '६', '७', '८', '९'];
$("#xyz").keyup(function(){
    var y = $("#xyz").val();

    if(jQuery.inArray(y, items) !== -1){
        $("#xyz").val(jQuery.inArray(y, items));
    }else{
        console.log('other');
    }

});

更新

已成功转换为第n位数字。唯一的问题是用结果替换输入的字符串。在控制台中获得正确的输出,但无法在输入框中替换它

Jsfiddle Link

var items = ['०', '१', '२', '३', '४', '५', '६', '७', '८', '९'];
$("#xyz").keyup(function(){
    var y = $("#xyz").val();
    var res = y.split("");

    var arr = [];
    res.forEach(function(xx) {
        if(jQuery.inArray(xx, items) !== -1){
            arr.push(jQuery.inArray(xx, items));
        }else{
            console.log('other');
        }
    });

    console.log(arr.join(""));
});

1 个答案:

答案 0 :(得分:1)

我无法找到直接在input中输入这些字符的方法,因此测试并不像我想要的那样彻底,但是,尝试一下:

var items = ['०', '१', '२', '३', '४', '५', '६', '७', '८', '९'];
$("#xyz").keyup(function(){
    var y = $("#xyz").val();
    var res = y.split("");
    
    var arr = [];
    res.forEach(function(xx) {
        if(jQuery.inArray(xx, items) !== -1){
            arr.push(jQuery.inArray(xx, items));
        } else if(xx.match(/\d/)){
        arr.push(xx);
        }else{
            console.log('other');
        }
    });

    console.log(arr.join(""));
    $(this).val(arr.join(""));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="xyz"/>