【问题标题】:How to post radio button value false/0, if radio button option is not selected & set true/1, if value is selected in the form of array?如果未选择单选按钮选项并设置 true/1,如果以数组的形式选择值,如何发布单选按钮值 false/0?
【发布时间】:2017-09-27 23:25:08
【问题描述】:

我需要一个单选类型输入字段数组,如果未选择选项,则数组包含索引值 0,如果选择了该选项,则包含 1。

这是表格

这是 HTML 代码

    <div class='input-group'>
        <input type="radio" name='correctOption[]'>
        <span class="input-group-addon"><i class="fa fa-pencil"></i></span> 
        {!! Form::text('optionText[]', '', array('class' => 'form-control','id' => 'optionText1')) !!}
   </div>

我得到这样的数组形式值

[正确选项] => 数组 ( [0] => 开启 )

但我想要这样

[correctOption] => Array
        (
            [0] => 0,
            [1] => 0,
            [2] => 1,
            [3] => 0,
            [4]=>0

        )

【问题讨论】:

  • 所以改变你的收音机的value属性。
  • @Justinas,我添加了像这样的新属性信息 ,现在我在提交表单后没有得到这个数组: (
  • 你不能使用任何属性名,应该是 value="1" 就像 Justinas 说的那样。
  • 它必须是value 属性,而不是随机的info / array-key 或任何东西。
  • 单选按钮由它们绑定到的名称组提交,因此只会提交单选按钮名称组的单个值。您当前的用法是说Question 1 = 1,无论选择的答案如何。您应该将每个单选按钮的值更改为它适用的值:value="Answer1"value="Answer2" 等,而不是所有这些都等于1。然后您将能够更新您的输入字段以反映单选按钮的值。 name="Answer1" value="Test 1",您可以根据提交的输入名称匹配缺少的correctOption

标签: php


【解决方案1】:

因为单选按钮只会为您提供与所选输入关联的单个值,您可能应该将inputname 属性更改为数组以外的其他值。

<input type="radio" name="correctOption" value="1">

确保它确实有一个值,以便您可以通过它的值来识别它 - 否则您将无法知道检查了哪个,因为您只会得到correctOption=on - 所以每个输入应该有不同的价值即

<input type="radio" name="correctOption" value="1">
<input type="radio" name="correctOption" value="2">
<input type="radio" name="correctOption" value="3">

如我所见,每个单选按钮都有相应的文本输入。这些输入中的每一个都应该具有相应单选按钮的 id 作为它们绑定到的数组的键:

<input type="radio" name="correctOption" value="1">
{!! Form::text('optionText[1]', '', array('class' => 'form-control','id' => 'optionText1')) !!}

<input type="radio" name="correctOption" value="2">
{!! Form::text('optionText[2]', '', array('class' => 'form-control','id' => 'optionText2')) !!}

然后您可以做的是通过获取选定的单选值和所有文本输入来处理请求 - 您的请求数据将类似于:

[
    'correctOption' => 1,
    'optionText' => [
        1 => 'Content of text input 1',
        2 => 'Content of text input 2',
        3 => 'Content of text input 3',
    ]
]

通过此请求,您可以知道选择了哪个选项以及其他文本输入包含哪些内容。 因为每个文本输入都有关联的单选按钮,所以您可以遍历 optionText 列表并生成您的 correctOptions 数组 - 我将使用 illuminate/support 包及其 Collection,这使得这项任务非常容易 - 沿着行:

use Illuminate\Support\Collection;

$requestData = $_POST;

$correctOption = $requestData['correctOption'];

$collection = new Collection($requestData['optionText']);

$correctOptions = $collection->map(function($value, int $index) use ($correctOption) {

    if ($index === $correctOption) {
        return 1;
    }

    return 0;

})->toArray();

【讨论】:

    猜你喜欢
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 2023-03-08
    • 2017-09-02
    • 1970-01-01
    • 2023-03-17
    • 2012-03-24
    相关资源
    最近更新 更多