使用选择和隐藏输入发送数据时出现问题

问题描述 投票:0回答:1

我的代码有问题,其中有一个选择被“禁用”,并且它不会将数据发送到下一页。我尝试过使用隐藏输入,但没有成功。

这是代码获取

$payt
变量的值并为用户选择的部分,但他无法更改它。

<select name="payt" id="payt" <?php if ($tsktype == "csd") { echo "readonly"; } ?>>
<option value="<?php echo $payt ?>"><?php echo $payt ?></option>
<?php 
    while($rowpayt = @mysqli_fetch_array($aPAYT,MYSQLI_ASSOC))
    {
        $payt = $rowpayt['payTerms'];
    $paytd = $rowpayt['ptdescr'];
?>
<option value="<?php echo $payt ?>"><?php echo $paytd ?></option>
<?php
    }
?>

</select>

这是他应该收到的另一个文件的部分。

if(!empty($_POST['payt'])){
    $payt = $_POST['payt'];
    echo "AQUI ESTÁ O PAYT: $payt";
}
else{
    echo "Não está definida";
}

我已经尝试过

readonly
hidden
,但都不起作用。

php html select hidden readonly
1个回答
0
投票

美好的一天!这里的问题是,当某个元素被禁用或设置为只读时,其值不会随表单一起提交。这就是为什么你的隐藏输入方法没有按预期工作。

要解决此问题,您可以保留用户交互的禁用状态,但仍然通过使用旁边的隐藏输入字段来发送其值。

首先,为用户保留禁用或只读状态。 使用隐藏输入来携带表单提交时的值。 试试这个:

<select name="payt_disabled" id="payt" disabled>
    <option value="<?php echo $payt ?>"><?php echo $payt ?></option>
    <?php 
        while($rowpayt = @mysqli_fetch_array($aPAYT, MYSQLI_ASSOC))
        {
            $payt = $rowpayt['payTerms'];
            $paytd = $rowpayt['ptdescr'];
    ?>
    <option value="<?php echo $payt ?>"><?php echo $paytd ?></option>
    <?php
        }
    ?>
</select>

<!-- Hidden input to pass the value -->
<input type="hidden" name="payt" value="<?php echo $payt; ?>" />

在接收页面,您可以这样访问该值:

if (!empty($_POST['payt'])) {
    $payt = $_POST['payt'];
    echo "AQUI ESTÁ O PAYT: $payt";
} else {
    echo "Não está definida";
}

此方法可确保禁用元素的值已提交并可在下一页上访问。

© www.soinside.com 2019 - 2024. All rights reserved.