При редактировании блока форма «Добавить блок» вставляет поля ввода с данными из БД. Новые пустые поля ввода текста также могут быть добавлены с помощью кнопки в той же форме.
Коды автоматической и ручной вставки идентичны:
<script type="text/javascript">
$(function(){
// Auto insert inputs with values from DB
var price = $('<td><?php echo $form->text('prices[]', $row['price'], ['class' => "decimals"]); ?></td>');
// Manually insert inputs with the button
$("#add").click(function() {
var price = $('<td><?php echo $form->text('prices[]', '', ['class' => "decimals"]); ?></td>');
});
// Check if only numeric keys pressed
$('.decimals').keydown(function (e) {
...
});
Как автоматически, так и вручную вводимые данные имеют класс «десятичные дроби» (проверено в консоли браузера). Клавиша $ ('. Decimals'). Разрешает только нажатия цифровых клавиш без букв.
Но проблема в том, что класс 'decimals' только активен, т. Е. Клавиша работает только на автоматически вводимых входах и НЕ работает на входах, вставленных вручную, несмотря на то, что последние имеют его.
Почему класс 'десятичные дроби' не распознан или не работает нажатие клавиши на вводимых вручную вводах?
[решаемые]
Благодаря Кейту, меняющемуся
$('.decimals').keydown(function (e) {
до
$('#build_table').on('keydown', '.decimals', function(e) {
работал!
PS. где <tbody id="build_table">
исх. http://api.jquery.com/on/ для получения дополнительной информации о делегированных событиях