表单字段上的单选按钮始终提交为ON / TRUE

时间:2010-11-18 22:00:56

标签: php forms webforms

我设置了一个相当基本的表单,其中包含一个单选按钮的输入字段。

有一个php脚本处理表单并将值插入到mysql数据库中。出于某种原因,每次填写表格时,无论是否选择了收音机,结果始终为ON / TRUE。

这是我的输入字段:

<input type="radio" name="news" id="news" class="radio" value="yes" />

以下是应该处理的PHP代码的一部分:

if(isset($_POST['news']))
{
$news = "Yes";
}
else
{
$news = "No";
}

有人可以告诉我该代码的问题是什么,还是我需要发布更多?

这是完整的表单代码:

<form method="POST" id="ipad" name="ipad" action="list.php">
<input type="text" onfocus="if (this.value == 'First Name') {this.value = '';}" onblur="if (this.value == '') {this.value = 'First Name';}" value="First Name" id="fname" name="fname" class="inputtext">


<input type="text" onfocus="if (this.value == 'Last Name') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Last Name';}" value="Last Name" id="lname" name="lname" class="inputtext">

<input type="text" onfocus="if (this.value == 'Email') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Email';}" value="Email" id="email" name="email" class="inputtext">

<input type="text" onfocus="if (this.value == 'Code') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Code';}" value="Code" id="code" name="code" class="inputtext">


<input type="radio" value="" class="radio" id="news" name="news">
<div class="radiotext">sign up?</div>

  </form>

请注意,单选按钮输入没有应用javascript。我已尝试使用YES或NO填写值=“”或将其留空。

4 个答案:

答案 0 :(得分:1)

您需要测试单选按钮的。变量将始终存在,因此isset()必然始终返回true。

if(!empty($_POST['news']) and ($_POST['news'] == 'yes'))

答案 1 :(得分:1)

if (isset($_POST['news']) && $_POST['news'] == 'yes'){
    $news = "Yes";
}
else
{
   $news = "No";
}

答案 2 :(得分:0)

关于那个jquery代码,javascript不需要在html里面工作。如果我是你,我会搜索我的代码.attr(“checked”,“checked”)或.prop(“checked”);

答案 3 :(得分:0)

您需要像这样解决它...

您需要向表单中添加hidden输入,并且无论何时单击radio按钮之一,您都会调用一个函数,该函数将更改hidden输入的值通过其id ..逐步进行:

  1. 向表单添加隐藏的输入,并为其提供名称和ID:

    <input type="hidden" id="IsFormer" name="IsFormerValue" value="">

  2. 为两个单选按钮添加点击属性:

    <input type="radio" id="Former" name="IsFormer" onclick="ToggleIsFormer('Yes')">

    <input type="radio" id="NotFormer" name="IsFormer" onclick="ToggleIsFormer('No')">

  3. 在Javascript中添加功能:

    function ToggleIsFormer (Value) { document.getElementById('IsFormer').value = Value; }

  4. 最后,在PHP中,使用隐藏输入的名称而不是单选按钮的名称来检查值。

  

以下是您的代码的上述步骤(首先尝试自行完成;)):


<form method="POST" id="ipad" name="ipad" action="list.php">
    <input type="text" onfocus="if (this.value == 'First Name') {this.value = '';}" onblur="if (this.value == '') {this.value = 'First Name';}" value="First Name" id="fname" name="fname" class="inputtext">
    <input type="text" onfocus="if (this.value == 'Last Name') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Last Name';}" value="Last Name" id="lname" name="lname" class="inputtext">
    <input type="text" onfocus="if (this.value == 'Email') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Email';}" value="Email" id="email" name="email" class="inputtext">
    <input type="text" onfocus="if (this.value == 'Code') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Code';}" value="Code" id="code" name="code" class="inputtext">

    <input type="radio" class="radio" id="news" name="news" onclick="ToggleWithNews()">
    <div class="radiotext">Sign up?</div>

    <input type="hidden" id="WithNews" name="WithNewsValue" value="No">
</form>

<script>
    function ToggleWithNews () {
        document.getElementById('WithNews').value = 'Yes';
    }
</script>

完成!


  

我的注释::如果只有[on]选项,并且查看者可以打开或关闭该选项,则Yes应该使用2个单选按钮,而{{1} },因为一个单选按钮一旦被选中将无法取消选中。

     

     

如果您只想为该选项添加输入,则应使用No输入,因为可以随时选中和取消选中该输入。


希望我的回答对您有所帮助:)