我正在实现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 。
答案 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() );
}
});
});
});