Javascript Функция не работает в Safari - PullRequest
0 голосов
/ 07 августа 2020

У меня есть функция, привязанная к событию onclick кнопки, которое создает копию динамически созданного div и всего его содержимого.

Все работает должным образом при использовании Chrome, Firefox или Edge и JS отлично проверяет. Однако в Safari это не работает. Нажатие кнопки ничего не делает.

У меня просто есть доступ к iPad и iPhone для устранения неполадок, которые по какой-то необъяснимой причине требуют Ma c для доступа к инструментам веб-разработчика в мобильном браузере, поэтому Я установил Safari 5.1.7 для Windows, чтобы попробовать отладить его.

При загрузке страницы консоль Safari выдает ошибку: SyntaxError: Expected token ')' ссылка на onclick="replicate_block(36219)" в кнопке.

<button type="button" class="btn btn-primary" onclick="replicate_block(36219)"><i class="fa fa-plus"></i> Add Block</button>

function replicate_block(pk){
    var block = $('#block-panel-' + pk);
    document.getElementById('replications' + pk).stepUp();
    var cloneCount = $('#replications' + pk).val();
    var newBlockID = 'block-panel-'+ pk + '-Rep' + cloneCount;

    var checked_dict = {};
    block.find('input').each(function(){
        checked_dict[$(this).attr('id')] = $(this).prop("checked");
    });

    var cloneBlock = block.clone().attr('id', newBlockID).after("#id");
    cloneBlock.appendTo($('#replicating_block_div' + pk));
   
    $('#' + newBlockID).find('.sig-field, .sig-button').each(function(){
        $(this).replaceWith('<p>Signature Fields are unavailabe until after the form has been saved.</p>');
    });

    $('#' + newBlockID).find('input').each(function(){
        this.name = this.name + '-Rep' + cloneCount;
        this.id = this.id + '-Rep' + cloneCount;
        if($(this).is(':radio') || $(this).is(':checkbox')){
            $(this).prop("checked",false);
        } else {
            $(this).val('');
        }
        $(this).removeClass('garlic-auto-save');
    });

    $('#' + newBlockID).find('select').each(function(){
        this.name = this.name + '-Rep' + cloneCount;
        this.id = this.id + '-Rep' + cloneCount;
        $(this).val('');
        $(this).removeClass('garlic-auto-save');
    });

    $('#' + newBlockID).find('textarea').each(function(){
        this.name = this.name + '-Rep' + cloneCount;
        this.id = this.id + '-Rep' + cloneCount;
        $(this).val('');
        $(this).removeClass('garlic-auto-save');
    });

    $('#' + newBlockID).find('button.locationbtn').each(function(){
        $(this).attr('onclick',$(this).attr('onclick').split(')')[0] + ',\'-Rep' + cloneCount + '\')');
    });

    $('#' + newBlockID).addClass('panel-warning');
    $('#' + newBlockID).find('.panel-title').each(function(){
        $(this).append('          <div class="pull-right"><small>Warning: This is a temporary block and will be deleted if you close this form without saving.</small></div>');
    });

    $('html,body').animate({
       scrollTop: $('#' + newBlockID).offset().top
    });
}

Любая информация будет принята с благодарностью.

...