document.getElementById.value不起作用

时间:2017-10-30 06:56:36

标签: javascript jquery html

我有一个html页面,其中包含输入字段供用户输入水果数量。在按键/键上,假设调用javascript文件方法并检查它是否为数字。如果它不是数字,则将清除文本框字段。但是,当我尝试输入非数值时,我的文本框不会被清除。我的代码中是否缺少某些内容?

HTML

                    <div class="form-group ">
                        <label class="control-label " for="name"> Name </label>
                        <input class="form-control" id="name" name="name" type="text" /> <span class="help-block" id="hint_name"> Enter your name </span>
                    </div>
                    <div class="form-group ">
                        <label class="control-label" for="apple"> Apple ( 69cents ) </label>
                        <input class="form-control form-control-input" id="apple" name="apple" type="text" autocomplete="off" onkeyup="isNumber(this,event)" /> <span class="help-block" id="hint_number"> Enter Qty </span>
                    </div>
                    <div class="form-group ">
                        <label class="control-label" for="orange"> Orange ( 59cents ) </label>
                        <input class="form-control form-control-input" id="orange" name="orange" type="text" autocomplete="off" onkeyup="isNumber(this,event)" /> <span class="help-block" id="hint_number1"> Enter Qty </span>
                    </div>
                    <div class="form-group ">
                        <label class="control-label" for="banana"> Banana ( 39cents ) </label>
                        <input class="form-control form-control-input" id="banana" name="banana" type="text" autocomplete="off" onkeyup="isNumber(this,event)" /> <span class="help-block" id="hint_number2"> Enter Qty </span>
                    </div>

的Javascript

 function isNumber(idValue, evt) {
    evt = (evt) ? evt : window.event;
    var sum = 0;
    var costOfApple = 0;
    var costOfOrange = 0;
    var costOfBanana = 0;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        document.getElementById('idValue.id').value = "";
        document.getElementById('totalCost').value = "NaN";
        $("#invalid-alert").fadeTo(2000, 500).slideUp(500, function() {
            $("#invalid-alert").slideUp(500);
        });
    } else {
        costOfApple = document.getElementById('apple').value * 69;
        costOfOrange = document.getElementById('orange').value * 59;
        costOfBanana = document.getElementById('banana').value * 39;
        sum = (Number(costOfApple) + Number(costOfOrange) + Number(costOfBanana)) / 100;
        document.getElementById('totalCost').value = "$" + (sum).toFixed(2);
    }
}

4 个答案:

答案 0 :(得分:2)

问题陈述是

document.getElementById('idValue.id').value = "";

您正在传递字符串&#39; idValue.id&#39;对于函数和具有ID的元素不存在,因此代码不起作用,您必须在浏览器控制台中收到错误。

由于idValue是指调用事件处理程序的元素。您可以直接使用它来设置其属性。

idValue.value = ""

答案 1 :(得分:1)

我认为

document.getElementById('idValue.id').value = "";

应该是

document.getElementById(idValue.id).value = "";

idValue.value = "";

并且,isNumber函数中的console.dir( idValue )很好!

请测试!

答案 2 :(得分:1)

你将它传递给一个函数,这里输入你应该把它作为一个对象而不是一个字符串。

不要这样做:

 document.getElementById('idValue.id').value = "";

试试这个

document.getElementById(idValue.id).value = "";

答案 3 :(得分:0)

$(document).on('change', 'input', function() {
    if($('#Id').val() == "" ) { 
       // Do something
    }
});

OR

    document.getElementById(yourID).value = "";