未检测到jQuery按钮单击

时间:2019-02-19 16:51:35

标签: jquery wordpress

情况和实现

我正在实现WP插件,并且必须在wp数据库中插入新帖子。因此,我创建了一个表单,该表单在单击按钮buttonCreateInv时显示。我使用jQuery,并且它确实有效

<?php

add_action('admin_head', 'JS_create_form_inventaire');
add_action('wp_ajax_display_form_inventaire', 'display_form_inventaire');

function button_create_inventaire(){
    echo '<button type="button" class="buttonCreateInv">Créer un inventaire</button>';
    echo '<div class="formCreateInv"></div>';
}

function JS_create_form_inventaire(){
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {
    $('.buttonCreateInv').click(function(){
        $.get( 
                ajaxurl, 
                { 'action': 'display_form_inventaire' }, 
                function (result) { 
                    $(".formCreateInv").html(result); 
                }
        );    
    });
});
</script>
<?php
}

它确实在函数display_form_inventaire中显示了我的表单:

function display_form_inventaire() { 
   ...
   $html .='<p><label for="description">Content</label></p>'.
       '<textarea id="textareaContent" name="textareaContent" style="display:none"></textarea>'.
       '<div style="background-color:white" id="divContent" name="divContent" contenteditable="true">'.
        '<table>...</table></div>';

    $html .='<p><input type="submit" value="Créer" tabindex="6" class="submitInsert" name="submitInsert" /></p>'.
            '<input type="hidden" name="creation_inventaire" value="new_post" />'.
            wp_nonce_field( 'new-post' ).
            '</form>'.
            '</div>';

   echo $html;
}

问题

第二次以完全相同的方式使用它时,它不起作用。 单击提交按钮submitInsert激活的第二个jQuery似乎没有被调用。

<?php

add_action('admin_head', 'JS_get_inv_content');
add_action('wp_ajax_insert_new_inventaire', 'insert_new_inventaire');

function JS_get_inv_content(){
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {
    $('.submitInsert').click(function(){
        alert('test');
        $.get( 
                ajaxurl, 
                { 'action': 'insert_new_inventaire' }, 
                function (result) { 
                    alert('result');
                    //$.getElementById("textareaContent").value = $.getElementById("divContent").innerHTML;
                }
        );    
    });

});
</script>
<?php 
}

当我单击submitInsert按钮时,不会显示警报 test

2 个答案:

答案 0 :(得分:1)

在输入中使用SUBMIT类型时,实际上是在提交表单,除非您停止表单。

您可以通过更改此方法来解决

<input type="submit" value="Créer" tabindex="6" class="submitInsert" name="submitInsert" />

对此

<input type="button" value="Créer" tabindex="6" class="submitInsert" name="submitInsert" />

或在jQuery中添加一行并将e添加到函数参数中

$('.submitInsert').click(function(e){
         e.preventDefault();

答案 1 :(得分:1)

由于表单是动态创建的,因此单击“提交”按钮后的检测应如下所示:

jQuery(document).ready(function($) {
    $(document).on("click", '.submitInsert',function(e){        
        $.ajax({
            type: "POST",
            url: ajaxurl,
            data: {
                "action":"insert_new_inventaire"
            },
            success: function() {
                alert( $("#categories").val() );
            }
        });

    });

});