0

ラジオボタンのグループがあります。そのうちの 2 つは異なる日付で表示されます。送信を許可する前に、それらの少なくとも 1 つが選択されていることを確認するためにそれらを検証しています。

これが私のテーブルのテーブル行です。注: 次のスクリプトでは、入力 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>

検証のためにこのスクリプトを試しましたが、これは最初のオプションのみをチェックしているようです。2番目のオプションを選択すると、選択が選択されていないため、trueになります。

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

すべてのオプションで同じ入力 ID を使用して、このスクリプトを試しました。これは、最初のオプションも選択されている場合にのみ通過します。選択された 2 番目のオプションは、引き続き 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[]')";
4

2 に答える 2

1

あなたはあなたが書いたもののいくつかで正しい軌道に乗っています。ただし、次の 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 に答える