我想我在这里需要建议。我不确定我是否以正确的方式这样做。所以我有这个输入字段值从数据库(选项表)中获取。
<!-- input to get amount of people -->
<tr>
<th scope="row"><?php _e('How many people do you want to add?', 'keeping-points'); ?></th>
<td>
<input type="text" size="15" name="posk_options[ppl_amount]" value="<?php _e( $options['ppl_amount'], 'keeping-points'); ?>" />
</td>
</tr>
<?php dlaugh_ppl_names(); ?>
用户键入他们想要输入字段的用户数量,下面的函数(dlaugh_ppl_names)将在提交表单时创建输入字段。它通过for循环来创建字段数。
function dlaugh_ppl_names() {
$options = get_option('posk_options');
$name_num = $options['ppl_amount'];
for($i=0;$i < $name_num; $i++) {
$point = "txt_" . $i;
$name_build = $point . "_name";
$point_total = $point . "_point_total";
$name_print = $options[$name_build];
$changed_name = str_replace(' ', '_', $name_print);
$point_build = "point_total_" . $changed_name;
if ($options[$name_build] == "") {
$set_points = $name_num - $i;
echo $i;
$final_ppl = $name_num - $set_points;
$options['ppl_amount'] = $final_ppl;
$options[$name_build] = null;
if ($options[$name_build] == null) {
$options[$point_total] = null;
}
$options = array_filter( $options );
update_option( 'posk_options', $options );
break;
}
if ($options[$name_build] == true) {
?>
<!-- Add Person Name -->
<tr>
<th scope="row">
<?php if ($options[$name_build] == "" ) {
_e('Person ' . $i + 1, 'keeping-points'); ?>
<?php } else
_e($options[$name_build], 'keeping-points');
?>
</th>
<td>
<input type="text" size="20" name="posk_options[<?php echo $name_build ?>]" value="<?php _e( $options[$name_build], 'keeping-points'); ?>" />
<input type="text" size="10" name="posk_options[<?php echo $point_build; ?>]" value="<?php _e( $options[$point_build], 'keeping-points'); ?>" />
</td>
</tr>
<?php
}
}
for($i=0;$i < $name_num; $i++) {
$point = "txt_" . $i;
$name_build = $point . "_name";
$point_total = $point . "_point_total";
$name_print = $options[$name_build];
$changed_name = str_replace(' ', '_', $name_print);
$point_build = "point_total_" . $changed_name;
if ($options[$name_build] == false && $options[$name_build] == null) {
?>
<!-- Add Person Name -->
<tr>
<th scope="row"><?php _e('Person' . ' ' . ($i + 1), 'keeping-points'); ?></th>
<td>
<input type="text" size="20" name="posk_options[<?php echo $name_build ?>]" value="<?php _e( $options[$name_build], 'keeping-points'); ?>" />
<input type="hidden" name="posk_options[<?php echo "point_total_" . $name_print ?>]" value="<?php _e( $options[$point_build], 'keeping-points'); ?>" />
</td>
</tr>
<?php
}
}
}
创建字段后,保存ppl_amount的输入将显示用户创建的字段数。 (比如输入15,按下提交,字段都会创建,然后15仍然存在。)我希望15在那里,但在提交时我希望15根据实际填写的名称输入字段的数量而改变。让我们说他们打了15 ...然后只填写5.好吧,15值将变为5。我工作的代码,但我的问题是值15被重新发送为人选择的数字,但如果我刷新页面,那么字段将按照我的预期工作。所以我希望ppl_amount根据dlaugh_ppl_names()函数填充的输入数量而改变。
希望它不会太混乱。谢谢你的建议!我想在每个输入字段填写后都有一个ajax调用来刷新页面,但那真的很烦人。我填写就像有一个简单的答案,我只是缺少。
答案 0 :(得分:0)
我找到的最佳解决方案是在人员输入中添加一个类,然后计算填充了多少输入字段,然后将该值放入输入字段中并提出问题。这样,它会根据填写的输入数量动态更新该字段值。我会尽快发布一个链接到完成的WordPress插件,以防万一你想要一个完整的演示。
使用Ajax
jQuery(document).ready(function($){
$('.people').blur(function() {
var data = {
'action': 'points_action'
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
$.post(ajaxurl, data, function(response) {
var searchCount = $('.people').filter(function(){
return $(this).val();
}).length;
$('#ppl_amount').val(searchCount);
});
});
});