【问题标题】:jQuery font picker in add block form dialog submits form instead of selecting font添加块表单对话框中的jQuery字体选择器提交表单而不是选择字体
【发布时间】:2018-10-11 08:42:59
【问题描述】:

我想在“添加块”表单对话框(Concrete5 CMS 的一部分)中使用 Google 字体选择器 (https://www.npmjs.com/package/font-picker)。但是当我点击字体选择器选择时,它会提交表单而不是简单地选择字体。似乎是字体选择器选择事件和表单对话框提交之间的 JS 冲突。

有人知道怎么解决吗?

谢谢。

代码(添加块表单对话框的一部分,与 JS 一起弹出):

<div class="form-group">
    <?php
    echo $form->label('font', t('Select text font family'));
    ?>
    <div id="font-picker"></div>
</div>
<div class="form-group">
    <p class="apply-font">Image text preview</p>
</div>

<script>
$(function(){    
    const fontPicker = new FontPicker(
    'Google-API-key', // Google API key
    'Open Sans', // default font
    {limit: 50}, // additional options
  );
});
</script>

[已解决]

感谢特里:

$('#ccm-block-form').on("click", ":submit", function(e) {
    if (e.target.id !== 'ccm-form-submit-button')
    {
        e.preventDefault();
    }
});

【问题讨论】:

    标签: jquery google-fonts concrete5-8.x


    【解决方案1】:

    e.target 实际上引用的是 DOM 节点,而不是 jQuery 对象。您应该将其与从 jQuery 对象返回的 DOM 节点进行比较,方法是在其上附加 [0]

    if (e.target !== $('#ccm-form-submit-button')[0]) { ... }
    

    另外,更简单的方法是检查目标的 ID:

    if (e.target.id !== 'ccm-form-submit-button') { ... }
    

    【讨论】:

    • 谢谢你,特里。那行得通。但有一个问题 - 表格现在提交了两次。 (我会更新帖子)
    • @linuxoid 不客气!我在回答中发现了一个错字,我刚刚更正了它;)
    猜你喜欢
    • 2017-01-30
    • 1970-01-01
    • 2015-11-04
    • 2021-11-25
    • 1970-01-01
    • 2014-04-08
    • 2015-04-16
    • 1970-01-01
    • 2012-02-28
    相关资源
    最近更新 更多