새 필드 줄을 추가하는 버튼이있는 WordPress 위젯에서 작업하고 있습니다. 어떤 이유로이 코드가 100 % 작동하지 않습니다. 페이지를 새로 고친 다음 버튼을 누르면 처음 두 필드가 추가되고 두 번째 필드가 추가됩니다. 그러나 먼저 저장 버튼을 클릭하면 완벽하게 작동합니다. 어떤 아이디어?WordPress 위젯 - JQuery 필드 추가 버튼 - 두 번 발동
public function form($instance)
{
$title = isset ($instance['title']) ? $instance['title'] : '';
$title = esc_attr($title);
printf(
'<p><label for="%1$s">%2$s</label><br />
<input type="text" name="%3$s" id="%1$s" value="%4$s" class="widefat"></p>',
$this->get_field_id('title'),
'Title',
$this->get_field_name('title'),
$title
);
$fields = isset ($instance['fields']) ? $instance['fields'] : array();
$field_num = count($fields);
$fields[ $field_num ] = '';
$fields_html = array();
$fields_counter = 0;
print_r($field_num);
foreach ($fields as $name => $value)
{
$fields_html[] = sprintf(
'<input type="text" name="%1$s[%2$s]" value="%3$s" class="widefat feature%2$s">',
$this->get_field_name('fields'),
$fields_counter,
esc_attr($value)
);
$fields_counter += 1;
if ($fields_counter == $field_num) break;
}
print 'Fields<br />' . join('<br />', $fields_html);
?>
<script type="text/javascript">
var fieldname = <?php echo json_encode($this->get_field_name('fields')) ?>;
var fieldnum = <?php echo json_encode($fields_counter - 1) ?>;
jQuery(function($) {
var count = fieldnum;
$('.addfeature').click(function() {
$(".feature"+count).after("<input type='text' name='"+fieldname+"["+(count+1) +"]' value='' class='widefat feature"+ (count+1) +"'>");
count++;
});
});
</script>
<?php
echo '<input class="button addfeature" type="button" value="' . __('Add Feature', 'myvps') . '" id="addfeature" />';
}
끔찍한 답변! 설명해 주셔서 감사합니다. 위젯 풀에 대해서는 전혀 몰랐습니다. – Tenatious
예. 나는 이것을 처음으로 많은 시간을 보냈다. 다시는 절대 권해라. – loushou