0

我有一组单选按钮。其中两个在不同的日期可见。我正在验证它们以确保在允许提交之前至少选择其中一个。

这是我的表中的一个表行,注意:在以下脚本中,我将输入 id 更改为所有的相同或唯一的 id。

<tr>
        <td style="width: 120px">Select An Option *:</td>
        <td>
            <div >
                    <h3>text</h3>
                    <?php // date activator

                        $display_start = "2013-09-01";
                        $display_end = "2013-10-17";
                        if((date("Y-m-d") >= $display_start) && (date("Y-m-d") <=
                        $display_end)){ ?>
                        <input id="selection" type="radio" name="group1"  value="Before17th" >  text  here  </option></br></br>

                    <?php } ?>
                    <?php // date activator

                        $display_start = "2013-10-18";
                        $display_end = "2014-10-18";
                        if((date("Y-m-d") >= $display_start) && (date("Y-m-d") <=
                        $display_end)){ ?>
                        <input id="selection" type="radio" name="group1" value="After17th"> text  here   </option><br/></br>
                        <?php } ?>
                        <input id="selection" type="radio" name="group1" value="Already Own Devices">   text  here   </option><br/> 
            </div>
        </td>
    </tr>

我试过这个脚本进行验证,这个似乎只检查第一个选项。如果我选择第二个选项,它不会捕捉到选择被选中,使其成为真的。

if ( ($('input[name="group1"]').attr('checked') == false )) {
    $("#errors").after('<span class="error">Please specify an option.</span>');
    hasError = true;
  }

我尝试了这个脚本,所有选项都使用相同的输入 ID。这仅在也选择了第一个选项时才会通过。选择的第二个选项仍然验证为假。

if ( ($("#selection").attr('checked') == false )) {
    $("#errors").after('<span class="error">Please specify an option.</span>');
    hasError = true;
  }

我也试过这个脚本,我给每个输入 id 一个唯一的。这很好用,但是当我想 POST 到我的数据库时,我必须为每个输入 id 创建一个单独的列。

 // validate option selection
if ( ($("#selection").attr('checked') == false ) && ($("#owndevices").attr('checked') == false )) {
    $("#errors").after('<span class="error">Please select an option.</span>');
    hasError = true;
 }

if ( ($("#selection").attr('checked') == false ) && ($("#onsite").attr('checked') == false )) {
    $("#errors").after('<span class="error">Please select an option.</span>');
    hasError = true;
 }

有没有办法让脚本验证是否使用相同的输入 id 检查脚本。或者也许使用值或组名?

谢谢

SQL 错误,我需要将 html 名称更改为 group1,然后插入 VALUES。我之前已经输入了输入ID。

$sql = "INSERT INTO 
            ucm_signup 
            ( company, address1, address2, city, province, zip, fname, lname, email, phone, 
                session, iama, buyfrom, group1 )
        VALUES
            ( '$_POST[company]','$_POST[address1]','$_POST[address2]','$_POST[city]',
                '$_POST[province]','$_POST[zip]','$_POST[fname]','$_POST[lname]','$_POST[mail]',
                '$_POST[phone]','$_POST[session]','$_POST[iama]','$_POST[buyfrom]','$_POST[]')";
4

2 回答 2

1

你写的一些东西走在了正确的轨道上。但有两点需要注意:

  1. 每个元素只使用一个 ID(具有名称、类或您想要的任何其他属性的组)。
  2. 当您使用 jQuery 选择多个元素时,将返回一个数组。

尝试做类似的事情

var radios = $('input[name="group1"]:checked');
if (radios.length > 0) {
        console.log('success'); 
} else {
        console.log('you need at least one radio checked'); 
}
于 2013-09-18T23:09:28.873 回答
0

那么我要做的第一件事就是将你的 html 代码与你的 php.ini 分开。它被认为是糟糕的造型。

在您的 html 文件中,有您的表单:

我只是要缩写单选按钮,希望你能得到更大的图景:)

<form action="php-to-process.php" method="POST">
 <input type="radio" name="selected" value="male">Something<br>
 <input type="radio" name="selected" value="female">Something<br>
 <input type="submit"/>
</form>

好的,所以现在发生的是当用户点击提交时,选定的值会转到 php 页面。请注意您是如何在 php 页面中访问 name 而不是 id 的。

在你的 php 文件中,你会有类似的东西

<?php
  $value = $_POST['selected'];
?>

然后你可以做任何你想做的事情。

如果您不想要提交按钮,那么您可以添加一个事件处理程序,例如

onClick="document.getElementById("formID").submit();"

因此,当用户单击该按钮时,表单就会提交。

这回答了你的问题了吗?

于 2013-09-18T23:17:15.290 回答