2015-06-16 4 views
0

У меня есть javascript, который хорошо работает во всех браузерах, но Safari.Ошибка Javascript на Сафари

код довольно легко и в основном, когда я изменить значение текстового поля (числовое значение) содержание в <b> изменяется

Вот код

$(document).on('change', '.priceAmount', function(e) { 
e.preventDefault(); 
$((e.target).closest('div.price_info')).find('> .supplierPrice').html(
($(this).val() + 10); 
}); 

corrisponding HTML является

<div class="price_info">   
    <input type="number" class="priceAmount">  
    <b class="supplierPrice">20</b> 
</div> 

The 20 внутри аппарата <b> вставляется с помощью JS, когда я ввести 10 в поле ввода.

Сафари дает мне эту ошибку

TypeError: undefined is not a function (evaluating '(e.target).closest('div.price_info')') 

Похоже, что Safari не получает элемент, когда событие инициируется

ответ

1

Используйте $ (это) вместо e.target. Предложил использовать ParseInt

$(document).on('change', '.priceAmount', function(e) { 
e.preventDefault(); 
$(this).closest('div.price_info').find('.supplierPrice').html(parseInt($(this).val()) + 10); 
}); 

Fiddle

+1

Extra ')' после 'closest' – Tushar

1

Вы пропустили $ в e.target:

$($(e.target).closest('div.price_info')) 
//^ 
    .find('> .supplierPrice').html(parseInt($(this).val(), 10) + 10); 

В качестве альтернативы, вы можете также использовать $(this):

$(this).closest('div.price_info') 
    .children('.supplierPrice') 
    .html(parseInt($(this).val(), 10) + 10); 

Ошибка синтаксиса в коде:

Extra (html после метод:

$((e.target).closest('div.price_info')).find('> .supplierPrice').html(
($(this).val() + 10); 
//^ 
Смежные вопросы