Javascript 如何在onkeydown之后获取输入的值?

Javascript 如何在onkeydown之后获取输入的值?,javascript,Javascript,我尝试在输入每个字符(如果是数字)后获取inputbox的新值。但下面示例中的ajax发送的是旧值,而不是新输入的值 例如,如果值为1,我将输入框聚焦,删除该值并按下2,Ajax将发送“1”。但我需要它来发送“2” HTML <input type="text" class="quant-input" size="7" name="qty" value="1" onkeydown="change_qty();"/> JavaScript function change_qty(

我尝试在输入每个字符(如果是数字)后获取inputbox的新值。但下面示例中的ajax发送的是旧值,而不是新输入的值

例如,如果值为1,我将输入框聚焦,删除该值并按下2,Ajax将发送“1”。但我需要它来发送“2”

HTML

<input type="text" class="quant-input" size="7" name="qty" value="1" onkeydown="change_qty();"/>

JavaScript

function change_qty(evt) {
    var charCode = event.keyCode
    if (charCode > 48 || charCode < 57) {
        jQuery.ajax("page.php", {
                type: "POST",
                data:'data='+$('.quant-input').val()
            });
        return true;
    } else {
        return false;
    }
}
功能更改\u数量(evt){
var charCode=event.keyCode
如果(字符码>48 | |字符码<57){
ajax(“page.php”{
类型:“POST”,
数据:'data='+$('.quant input').val()
});
返回true;
}否则{
返回false;
}
}

该值在keyup事件之前不会更改。因此,您需要使用以下选项:

onkeyup="change_qty();"

该值在keyup事件之前不会更改。因此,您需要使用以下选项:

onkeyup="change_qty();"
当用户按下按钮时,它将调用您的函数,所以,首先它将调用您的函数,但随后它将在输入中插入值。所以,你应该使用

onkeyup
当用户按下按钮时,它将调用您的函数,所以,首先它将调用您的函数,但随后它将在输入中插入值。所以,你应该使用

onkeyup
您可以尝试
onBlur=“change_qty();”
,它将在离开控件焦点后为您提供值。或者,如果您不想离开文本框并需要更新的值,
onKeyUp
很好

您可以尝试
onBlur=“change_qty();”
在离开控件焦点后为您提供值。或者,如果您不想离开文本框,需要更新的值,
onKeyUp
可以 使用以下任一选项:

  • 使用
    onkeyup
  • 在您的情况下,使用新的html5
    input
    事件
    oninput

    <input oninput="change_qty();" ...>
    

    试试这些 使用以下任一选项:

  • 使用
    onkeyup
  • 在您的情况下,使用新的html5
    input
    事件
    oninput

    <input oninput="change_qty();" ...>
    


    在发送ajax之前,您可以使用onkeydown/onkeypress进行一些验证(为了支持复制粘贴和特殊键(例如Enter),您需要额外的代码)

    功能更改\u数量(){
    让key=event.key;
    让oldval=event.target.value;
    让newval=oldval.slice(0,event.target.selectionStart)+key+oldval.slice(event.target.selectionEnd);
    console.clear();
    console.log(“旧值”,oldval);
    console.log(“新值”,newval);
    //验证和ajax代码
    //return false;//不允许按键
    返回true;//将允许按键
    }

    在发送ajax之前,您可以使用onkeydown/onkeypress进行一些验证(为了支持复制粘贴和特殊键(例如Enter),您需要额外的代码)

    功能更改\u数量(){
    让key=event.key;
    让oldval=event.target.value;
    让newval=oldval.slice(0,event.target.selectionStart)+key+oldval.slice(event.target.selectionEnd);
    console.clear();
    console.log(“旧值”,oldval);
    console.log(“新值”,newval);
    //验证和ajax代码
    //return false;//不允许按键
    返回true;//将允许按键
    }

    尝试将onkeydown更改为onkeyup或onkeypress?您不能。Onkeydown尚未输入任何内容。是否尝试将Onkeydown更改为onkeyup或onkeypress?无法。Onkeydown尚未输入任何内容。