2

私はforeachループを持つフォームを持っており、ループ内には入力タイプのラジオがあるので、次のコードのような新しい値を持つたびに:

<?php
            $aircrafts = AircraftPermit::getaircraft();
            foreach($aircrafts as $aircraft)
                {
                    $pacas = AircraftPermit::getrouteaircraft($aircraft->name ,$pilotid);
                    if($pacas)
                        {
            ?>
                            <tr>
                                <td>
                                    <input type="radio" id="ac" value="" disabled="disabled"><?php echo $aircraft->name ;?><br />
                                </td>
                                <td align="center">
                                    <input name="submit" title="Give permission to selected aircraft" type="submit" value="Give Permit" disabled="disabled">
                                </td>
                                <td align="center">
                                    <font color="green">Granted</font>
                                </td>
                            </tr>
            <?php
                        }
                    else
                        {
            ?>
                            <tr>
                                <td>
                                    <input type="radio" id="ac" value="<?php echo $aircraft->name ;?>"><?php echo $aircraft->name ;?><br />
                                </td>
                                <td align="center">
                                    <input name="id" type="hidden" value="<?php echo $pilotid ;?>">
                                    <input name="submit" title="Give permission to selected aircraft" type="submit" value="Give Permit">
                                </td>
                                <td align="center">
                                    <font color="red">Restricted</font>
                                </td>
                            </tr>
            <?php
                        }
                }
            ?>

最後に、次のようにラジオボタンが選択されているかどうかを確認するスクリプトがあります。

<script type="text/javascript">
function radio_is_on() {
    var elementId = document.getElementById('ac');
    if (elementId.checked==false)
    {
        alert('Please select the aircraft first!');
        return false;
    }
    if (elementId.value)
    {
        return true;
    }
}
</script>

ラジオボタンが押されていない場合、メッセージは正常にポップアップ表示されますが、押された場合、値は返されず、フォームはnull値を送信します。どこが間違っているのか教えてください。ありがとう

4

3 に答える 3

0

すべてのラジオボタンに同じIDがあります-これは正しくありません。そして、常に1つのボタンだけが考慮されます。あなたはそれらに番号を付けることができます、例えば。ac1、ac2など。

于 2012-11-28T09:20:17.800 に答える
0

複数のidタグを持つことはできません。これが、おそらく機能しない理由です。代わりにクラスに変更してみてください。たとえば、jqueryで以下を参照してください。

HTML:

<input type="radio" class="ac" value="<?php echo $aircraft->name ;?>"><?php echo $aircraft->name ;?><br />

JAVASCRIPT:

function radio_is_on() {
  if ($('.ac:checked').val()) {
    return true;
  }
  else {
    alert('Please select the aircraft first!');
    return false;
  }
}
于 2012-11-28T09:20:54.813 に答える
0

私が覚えている限り、ラジオボタンはchecked属性がある場合は「押され」、ない場合は押されません。

..。
    if(elementId.hasOwnProperty('checked'))
..。

それ以外の

..。
    if(elementId.checked == false)
..。
于 2012-11-28T09:21:21.660 に答える