一起使用onchange()和onkeypress()的问题

时间:2013-05-05 18:56:38

标签: javascript jquery html

我的输入需要是数字,需要在更改值时更新标签。

<input id="shares" name="shares" type="text" maxlength="3" onchange="game_board.update_shares(this);this.oldvalue = this.value;" onkeypress="return game_board.isNumberKey(event)">

需要onkeypress功能以确保用户只能输入数字,而onchange将使用新信息更新我的标签。

onkeypress功能运行良好,我只能输入数字。但是,onchange功能无效。

验证功能:

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

return true;};

更新功能:

this.update_shares = function(o){
alert("test");
$(".dollar_amount").html("$" + "value" + ".00");};

2 个答案:

答案 0 :(得分:3)

由于你正在使用jQuery,你也可以使用jQuery事件处理程序:

<强> HTML

<input id="shares" name="shares" type="text" maxlength="3" />
<div class="dollar_amount"></div>

<强> JS

$("#shares").on("keydown", function (evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode;
    if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false;
    }
    return true;
});

$("#shares").on("change", function () {
    var o = $(this).val();
    $(".dollar_amount").html("$" + o + ".00");
});

工作示例:http://jsfiddle.net/charlescarver/e43pE/1/

这是否符合您的需求?或者您需要保留this.update_shares = function(o)

答案 1 :(得分:2)

因此,您想要的是在值更改时更新标签。如果我是你,我会在按键事件上做。我的意思是,像:

this.isNumberKey = function(evt){
    var charCode = (evt.which) ? evt.which : event.keyCode;
    if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)){
        return false;
    }
    $(".dollar_amount").html("$" + "value" + ".00");};
    return true;
};