存储信息之前的Javascript验证

时间:2013-09-18 22:52:55

标签: javascript jquery html sql

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

这是我表格中的表格行,注意:在以下脚本中,我将输入ID更改为全部或唯一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。这仅在选择第一个选项时通过。选择的第二个选项仍然验证为false。

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

我也试过这个脚本,我给每个输入id一个唯一的输入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[]')";

2 个答案:

答案 0 :(得分:1)

你正在使用你写的一些内容走在正确的轨道上。但有两点需要注意:

  1. 每个元素只使用一个ID(具有名称,类或任何其他的组) 属性你喜欢)。
  2. 当您使用jQuery选择更多时 一个元素然后返回一个数组。
  3. 尝试做类似

    的事情
    var radios = $('input[name="group1"]:checked');
    if (radios.length > 0) {
            console.log('success'); 
    } else {
            console.log('you need at least one radio checked'); 
    }
    

答案 1 :(得分:0)

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

在你的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();"

所以当用户点击该按钮时,表单会提交。

这会回答你的问题吗?