$(this.id).val()不起作用,当按键不起作用时,id从类中获取,为什么?

时间:2018-12-13 11:40:54

标签: jquery

HTML

<input type="number" class="atm" id="price_1" value="0.00" />
<input type="number" class="atm" id="price_2" value="0.00" />

jQuery

$(function() {

    var input = ""; //holds current input as a string

    $(".atm").keydown(function(e) {     
        //handle backspace key
        if(e.keyCode == 8 && input.length > 0) {
            input = input.slice(0,input.length-1); //remove last digit
            $(this.id).val(formatNumber(input));
        }
        else {
            var key = getKeyValue(e.keyCode);
            if(key) {
                input += key; //add actual digit to the input string
                $(this.id).val(formatNumber(input)); //format input string and set the input box value to it
            }
        }
        return false;
    });

    function getKeyValue(keyCode) {
        if(keyCode > 57) { //also check for numpad keys
            keyCode -= 48;
        }
        if(keyCode >= 48 && keyCode <= 57) {
            return String.fromCharCode(keyCode);
        }
    }

    function formatNumber(input) {
        if(isNaN(parseFloat(input))) {
            return "0.00"; //if the input is invalid just set the value to 0.00
        }
        var num = parseFloat(input);
        return (num / 100).toFixed(2); //move the decimal up to places return a X.00 format
    }



});

它不起作用,从classes(atm)获取的id根本无法使用。我需要有人帮助我解决这个问题。我很着急。谢谢。我使用console.log来检查this.id,它实际上获得了正确的ID,但是何时执行$(this.id).val();。它不起作用

5 个答案:

答案 0 :(得分:2)

如果要按ID选择,则应使用$('#'+this.id)

$(this)将为您提供触发input事件的keydown

答案 1 :(得分:0)

尝试这些选项

(1)

$(this).val(formatNumber(input));

(2)

$("#"+this.id).val(formatNumber(input));

答案 2 :(得分:0)

您已经处于corrent上下文中,那么当您在事件函数中时,可以使用以下语法:

=calcformattingval(B5)=$A$1

答案 3 :(得分:0)

对不起,刚才我弄清楚了,这不是this.id的问题。是var输入的问题。 html中的两个输入共享js中的一个var输入

答案 4 :(得分:0)

您可以使用此代码获取ID值。

$(this).attr('id')。val();