2016-09-26 2 views
0

Я пытаюсь запустить событие, когда пользователь вводит сумму, и им получать эту ошибкуполучить странные ошибки Jquery, что я не могу понять это

Uncaught TypeError: Не удается прочитать свойство «toLowerCase» неопределенной

HTML

<input type="text" id="ItemQuantity#i#" name="ItemQuantity#i#" onkeypress="return isNumeric(event)" onkeydown="return keyispressed(event);" onchange="autototal()"> 

пытаясь сосредоточиться на OnChange = "autototal()"

JQuery

function autototal(){ 
    var sum = 0; 
    var quantity = 0; 
    var price = 0; 
    var totalPrice = 0; 
    quantity = $(this).val(); 
    price = $(this).closest('.col-price').find('input').val(); 

    console.log(quantity); 
    console.log(price); 
} 
+5

Вы не используете 'toLowerCase' в любом месте своего кода ... – Li357

+0

- это весь ваш код? – depperm

+0

да, что относится к этой ошибке, право не имеет смысла – Charles

ответ

3

Путь вы вызываете обработчик, this не элемент, это window.

Либо использовать JQuery, чтобы подключить обработчик, который будет гарантировать, что this относится к элементу:

$("[id='ItemQuantity#i#']").on("change", autototal); 

... или, если вы действительно хотите использовать обработку onxyz события атрибута по стилю, либо сделать это:

<input ... onchange="autototal.call(this)"> 

и он должен работать, как есть, или сделать это:

onchange="autototal(this)" 

... и обновите autototal, чтобы использовать аргумент, а не this.

+0

Эта часть генерирует ошибку 'elem.nodeName.toLowerCase()' внутри jQuery, где 'elem' ссылается на' window' из-за причин, о которых вы указали –

+0

@Maximus: с кодом OP, да; не с кодом выше. –

+0

да, я имел в виду код OP :) –

Смежные вопросы