0

テキスト フィールドとチェック ボックスを正常にチェックする JavaScript がありますが、ラジオ ボタンに関しては、オプションの 1 つが選択されているかどうかを区別できません。

これを正しく行う方法は?

これは私が持っているものです:

validateBugForm = function()
{
    var name = document.forms["bug_form"]["Name"].value;
    var email = document.forms["bug_form"]["Email"].value;
    var tos = document.forms["bug_form"]["Accept"].checked;
    var project = document.forms["bug_form"]["project"].value;

    if (name == "")
    {
        alert("You must provide your name or nick name!");
        return false;
    }

    if (project == "")
    {
        alert("You must choose a project.");
        return false;
    }

    if (email.indexOf ('@', 0) == -1 || email.indexOf ('.', 0) == -1)
    {
        alert("You must provide your email address!");
        return false;
    }

    if (!tos)
    {
        alert("You must agree to our Terms of Services.");
        return false;
    }
}

私のフォームには次のものがあります。

<tr>
    <td width="30%">Choose a project in which you encountered a problem. 
    <big><font color="red">*</font></big></td></td>
    <td width="10px" class="table_td_space"></td>
    <td width="70%">
        <input type="radio" name="project" value="1" id="1">1<br>
        <input type="radio" name="project" value="2" id="2">2<br>
        <input type="radio" name="project" value="3" id="3">3<br>
        <input type="radio" name="project" value="4" id="4">4<br>
    </td>
</tr>
4

3 に答える 3

6

すべてのラジオ ボタン オプションをループして、いずれかが選択されているかどうかを確認する必要があります。

var projectObj = document.form1.project
var len = projectObj.length
var chosen = null;

for (i = 0; i <len; i++) {
    if (projectObj[i].checked) {
       chosen = projectObj[i].value
    }
}

if (chosen == null) {
    alert("No Radio Button Chosen")
}

http://homepage.ntlworld.com/kayseycarvey/jss3p11.html

于 2012-04-23T02:58:47.910 に答える
1

注意点として、この無線要素を超えるフォームを検証しようとしない限り、これは正常に機能するため、1時間かけてこれに頭を悩ませました。各ラジオボタンは個別のフォーム要素であり、フォーム内のすべての要素(たとえば、名前に「required_」が含まれるすべて)をループしようとしているため、残りの検証が混乱したり、常に実行されたりする可能性があります。フォームをループするときに各ラジオボタンを個別の要素としてチェックすることになるため、「false」が表示されます。私が見つけたこれを回避する方法は、非表示のフォームフィールドを使用して、選択したラジオボタンの値を保持することです。各ラジオボタンにonClickイベントを配置して、クリックするとその値を非表示のフィールドに転送します。値があることを確認するだけです。その隠されたフィールドで。そして、しないでください

于 2013-02-11T16:35:13.023 に答える
1

すべてのラジオ ボタン オプションをループして、いずれかが選択されているかどうかを確認する必要がありますが、「projectObj」を保持している場合は、「value」メソッドを呼び出す必要があります...

var projectObj = document.form1.project.value;
var len = projectObj.length;
var chosen = null;

for (i = 0; i <len; i++) {
    if (projectObj[i].checked) {
       chosen = projectObj[i].value;
    }
}

if (chosen == null) {enter code here
    alert("No Radio Button Chosen");
} 

それ以外の場合は、ラジオ オブジェクト リストを返すだけです。

于 2015-06-23T10:04:16.743 に答える