2

フォーム内に3つのラジオボタンを入力しています。ユーザーがすべての質問を選択または回答せずに[送信]をクリックすると、アラートボックスが表示されます。

これは私のフォームです..

<tr>
<th> Your attendance<font size="4" > </font></th>
<td>  <input type="radio" name ="v1" value = "4"    onclick="updateTotal();"/></td>
<td>  <input type="radio" name ="v1" value = "3"    onclick="updateTotal();" /></td>
<td>  <input type="radio" name ="v1" value = "2"    onclick="updateTotal();" /></td>
<td>  <input type="radio" name ="v1" value = "1"    onclick="updateTotal();" /></td>    
</tr>

<tr>
<th > Your grades  <font size="4" > </font></th>
<td>  <input type="radio" name ="v2" value = "4"    onclick="updateTotal();" /></td>
<td>  <input type="radio" name ="v2" value = "3"    onclick="updateTotal();" /></td>
<td>  <input type="radio" name ="v2" value = "2"    onclick="updateTotal();" /></td>
<td>  <input type="radio" name ="v2" value = "1"    onclick="updateTotal();" /></td>    
</tr>

<tr>
<th >Your self-control <font size="4" > </font></th>
<td>  <input type="radio" name ="v3" value = "4"    onclick="updateTotal();" /></td>
<td>  <input type="radio" name ="v3" value = "3"    onclick="updateTotal();" /></td>
<td>  <input type="radio" name ="v3" value = "2"    onclick="updateTotal();" /></td>
<td>  <input type="radio" name ="v3" value = "1"    onclick="updateTotal();" /></td>    
</tr> 

私はこのJavaScriptコードを試しました..しかしそれは機能しませんアラートは表示されません

<script type="text/javascript">
 function validateform()
  {
    if(document.getElementsByName('v1').value="")
    {
      alert('Your grades is not selected');
    return false;
    }
  }
    </script>
4

3 に答える 3

1

document.getElementsByName('v1').valueこの機能を使用すると、ラジオグループでは使用できません。

このフィドルをチェックしてください:http://jsfiddle.net/JXajh/2/

function isOneChecked(name)
{
    var buttons = document.getElementsByName(name);

    for (var i = 0; i < buttons.length; i++)
    {
        if (buttons[i].checked)
        {
            return true;
        }
    }

    return false;        
}
于 2012-11-28T22:32:22.023 に答える
1

これは、getElementsByName()が DOM 要素の配列を返すためです。値を取得したり、要素がこの配列から直接チェックされているかどうかを検出したりすることはできません。すべての要素を反復処理して、少なくとも 1 つがチェックされていることを確認する必要があります。だから、このようなもの:

function validateForm() {
    var radiosToValidate = ['v1', 'v2', 'v3'];
    var invalidRadios = [];
    for (i = 0; i < radiosToValidate.length; i++) {
        var currentRadioArray = documentGetElementsByName(radiosToValidate[i]);
        var currentRadioIsValid = false;
        for (j = 0; j < currentRadioArray.length; j++) {
            if (currentRadioArray[j].checked) {
                currentRadioIsValid = true;
                break;
            }
        }
        if (currentRadioIsValid === false) {
            invalidRadios[] = radiosToValidate[i];
        }
    }
    if (invalidRadios.length > 0) {
        alert('At least one radio button has not been selected');
        return false;
    }
    return true;
}
于 2012-11-28T22:36:52.083 に答える
-2

比較には、=ではなく単一のがあり==ます。あなたは割り当てとテストを行っ""ていますが、これは偽物であるため、ifステートメントは実行されません。

2つの値を比較する演算子は==です。

これを使って:

if (document.getElementsByName('v1').value== "") {
  // ...
}
于 2012-11-28T22:28:59.010 に答える