【发布时间】:2014-01-09 06:01:25
【问题描述】:
我正在开发一个 WordPress 小部件,该小部件有一个按钮,当按下它时,它会添加一个新的字段行。由于某种原因,此代码无法 100% 运行。如果我刷新页面然后按下按钮,那么它第一次添加两个字段,然后第二次添加 3 个字段。但是,如果我先单击保存按钮,它会完美运行。有什么想法吗?
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" />';
}
【问题讨论】:
标签: jquery wordpress foreach widget