参考错误:未定义.match

时间:2018-06-30 01:54:28

标签: javascript jquery jquery-ui open-source codeigniter-3

自从jQuery 3更新以来,下拉框不再正常运行。
使用jQuery迁移来帮助解决问题。

起初我以为这是一个加载问题,所以做了onload检查技巧来检查jquery是否实际被加载。

我还尝试按照jquery主网站上的最佳做法重写函数,但仍然不满意。

代码:

JS

var selectedModule = '';

function getTemplate(el){
    selectedModule = $(el).attr('value');

    if (selectedModule.match('!')){
        selectedModule = '';
        $(el).attr('value', '');
        alert('Please select a template within the module.');
    }

    if (selectedModule != ''){
        $('.showModuleName').hide();
        $('#templateName').val(selectedModule);

        if (selectedModule == 'custom'){
            $('.showModulePath').show();
        }
        else {
            $('.showModulePath').hide();
            $('#modulePath').val(selectedModule);
        }
    }
    else if (selectedModule == ''){
        $('.showModuleName').show();
        $('.showModulePath').hide();
    }
}

function loadTemplate(data){
    $('textarea#body').val(data);
}


function revertTemplate(){
    if (confirm('By doing this you will lose any unsaved changes. Are you sure?')){

        getTemplate($('select#moduleSelect'));

        if (selectedModule == ''){
            $('textarea#body').val("{include:header}\n\n{block1}\n\n{include:footer}");
        } else {
            $.get($('select#moduleSelect').attr('rel')+'/'+selectedModule, loadTemplate);
        }

        return true;
    }
    else {
        return false;
    }
}

$(function(){
    $('select#moduleSelect').change(function(){
        revertTemplate();
    });

    $('input#default').click(function(){
        revertTemplate();
    });

    getTemplate($('select#moduleSelect'));

});

HTML / PHP

<div class="showModuleName">
  <label for="templateName">Name:</label>
  <?php echo form_input('templateName',set_value('templateName', $data['templateName']), 'id="templateName" class="formelement"'); ?>
  <br class="clear" /><br/>
</div>

<label for="moduleSelect">Module:</label>
<?php
  $values = array();
  $values[''] = 'Not a module template';
  $values['divider'] = '---------------------------';
  if (in_array('blog', $this->permission->permissions)) $values['!blog'] = 'Blog';
  if (in_array('blog', $this->permission->permissions)) $values['blog'] = '-- View Posts';
  if (in_array('blog', $this->permission->permissions)) $values['blog_single'] = '-- Single Post';
  if (in_array('blog', $this->permission->permissions)) $values['blog_search'] = '-- Blog Search Results';

  $values['custom'] = 'Custom Module';

  echo @form_dropdown('moduleSelect',$values, (($data['templateName'] == 'custom') ? 'custom' : $data['modulePath']), 'id="moduleSelect" class="formelement" rel="'.site_url('/admin/pages/module').'"');
?>
<span class="tip">To make a module template (e.g. for the Blog) select the module here.</span>
<br class="clear" /><br/>

<div class="showModulePath">
  <label for="modulePath">Module Reference:</label>
  <?php echo @form_input('modulePath',set_value('modulePath', $data['modulePath']), 'id="modulePath" class="formelement"'); ?>
  <br class="clear" /><br/>
</div>

链接:

JS代码

(https://pastebin.com/QuWyjjVe)

Github Source

0 个答案:

没有答案