首页 > 解决方案 > 在表单php中从多个选择中发布未选择的选项

问题描述

我可以在 PHP 中获取我的 selectedFruit 数组,但是如何使用 js 或 jquery 填充隐藏的输入,以便我可以实现我的目标?

<form id="my_form" action method="post">
<select name="selectedFruit[]" multiple="multiple">
    <option value="1">Orange</option>
    <option value="2">Grape</option>
    <option value="3">Apple</option>
    <option value="4">Watermelon</option>
</select>
<input hidden name="unselectedFruit[]">
<button type="submit">Submit</button>
</form>

我的目标是在我的 php 文件中执行此操作:

$selected_array_fruit = $_POST["selectedFruit[]"];
$unselected_array_fruit = $_POST["unselectedFruit[]"];

标签: phphtmljquery

解决方案


如果更改选择,您可以创建新的输入值。

- 创建函数,从选择中过滤未选择的值,并为 PHP 数组创建具有 unselectedFruit[] 名称的新隐藏输入。
- 为更改创建侦听器并重新计算选择选项。

// this is for explain and by default is truncated and filtered by selector
// option:selected and remove the line 'skip selected'
const loadSelectUncheckedValues = function() {
  $('[name="unselectedFruit[]"]').remove(); // clean all
  $('select[name="selectedFruit[]"] option').each(function() {
    if($(this).is(':selected')) return; // skip selected
    $('#my_form').append('<input type="hidden" name="unselectedFruit[]" value="'+$(this).val()+'" />');
  });
}

// init
loadSelectUncheckedValues();

$('select[name="selectedFruit[]"]').on('change', function() {
    loadSelectUncheckedValues();
});

推荐阅读