C5-8.0 + класс ввода не активен, если ввод добавлен jQ в форме Add Block - PullRequest
0 голосов
/ 30 апреля 2018

При редактировании блока форма «Добавить блок» вставляет поля ввода с данными из БД. Новые пустые поля ввода текста также могут быть добавлены с помощью кнопки в той же форме.

Коды автоматической и ручной вставки идентичны:

<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/ для получения дополнительной информации о делегированных событиях

...