1

我有这个小 javascript 工具,可以实时将数字转换为其他基数。每次在每个文本框中按下一个键时checkchangedec(),它都会调用一个更新函数来实现这一点。checkchangehex()它工作正常。

我想要做的是使用箭头键“移动焦点”。我之前使用 成功完成了此操作event.keyCode,但问题是我已经在使用元素的 onkeydown 和 onkeypressed 调用函数。我不知道通过 onkeydown 或 onkeypressed 属性调用多个函数的方法。

是数字转换器的JSFiddle,这里是输入:

<input id="dec" onkeypress="return isNumberKey(event);" onkeydown=checkchangedec() value="10">

以及它调用的函数:

function checkchangedec() {
setTimeout(

    function () {
        if (id('dec').value !== "") {
            id('hex').value = parseInt(id('dec').value, 10).toString(16);
            id('bin').value = parseInt(id('dec').value, 10).toString(2);
            id('cbi').value = parseInt(id('dec').value, 10).toString(id('cbival').value);
        }
    }, 20);
}   


function isNumberKey(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
    return false;
}
return true;

}

是我如何使它工作的示例:

function navigate(up, down) {
            if (event.keyCode == 13 || event.keyCode == 40) document.getElementById(down).focus(); 
            if (event.keyCode == 38) {document.getElementById(up).focus(); document.getElementById(up).select();}
            if (event.keyCode == 39) randomize(); // the randomize() function gives a random number, 
                                                  // irrelevant to navigation

这是输入框:

<input type="text" value="55EEFF" id="i_sco" onkeydown="navigate('i_col', 'i_ssi')"></input>

4

2 回答 2

0

“我不知道通过 onkeydown 或 onkeypressed 属性调用多个函数的方法。”

您可以通过定义一个新的“包装器”函数来获得相同的结果,该函数包含您想要在事件发生时调用的所有其他函数。然后,只需将此新功能分配给onkeypress事件。

HTML:

<input id="dec" onkeypress="click_function()" value="10">

JavaScript:

function click_function(event) {
    //first make sure a number key was pressed
    if(isNumberKey(event)) {
        checkchangedec();

        return true;
    } else
        //you can check event.keyCode again here for up/down
    }

    return false;  //will return false if a number key was not pressed
}

这是否有助于您开始解决问题?

于 2013-05-20T18:26:22.397 回答
0

你可以通过修改你的等函数来获得你想要checkchangedeccheckchangehex功能

HTML:

<input id="dec" onkeypress="return isNumberKey(event);" onkeydown="checkchangedec(event)" value="10">

Javascript:

function checkchangedec(event)
{
var charCode = (event.which) ? event.which : event.keyCode;
if (charCode == 40){
    var input = document.getElementById('hex');
    input.focus();
    input.select();
    return;
}
else if (charCode == 38)
    return; // there isn't an input above Decimal.

setTimeout(
    function () {
        if (id('dec').value !== "") {
            id('hex').value = parseInt(id('dec').value, 10).toString(16);
            id('bin').value = parseInt(id('dec').value, 10).toString(2);
            id('cbi').value = parseInt(id('dec').value, 10).toString(id('cbival').value);
        }
    }, 20);

}
于 2013-05-20T18:36:10.303 回答