2

登録フォームが 1 つあり、性別セクションのラジオ ボタンに検証を追加したいと考えています。私のフォームは

<form name="formreg" enctype="multipart/form-data" method="post">
     <input type="radio" value="male" name="gender" /> Male<br />
      <input type="radio" value="female" name="gender" /> Female<br />
      <input value="Submit" onclick="return inputval()" type="submit" />
    </form>

以下のスクリプトを使用していますが、正しく動作しません..

<script type="text/javascript">
     function inputval(){
        if(document.getElementById("gender").checked=="false")
        {
            alert("Select at least male or female.");
            return false;
        }   
    }
    </script>

問題が見つかりません。

4

6 に答える 6

2

ID で要素を取得しています。「性別」は ID ではなく、入力の名前です。
それ以外の

<input type="radio" value="male" name="gender" /> Male<br />

あなたが使用する必要があります

<input type="radio" value="male" id="gender" /> Male<br />
于 2013-03-22T17:58:31.670 に答える
1

これをjqueryでタグ付けしたので、:checked疑似クラスセレクターを使用してください。

<script type="text/javascript">
function inputval()
{
    if($("form[name='formreg'] input[type='radio']:checked").length != 1)
    {
        alert("Select at least male or female.");
        return false;
    }
}
</script>
于 2013-03-22T18:00:10.740 に答える
0

このフィドルは、(jquery なしで) いくつかのアイデアを提供する可能性があります。ボタンの 1 つをチェックしたことに注意してください。1 つがチェックされている場合、anyChecked が true に設定されることを示すことができます。

<form name="formreg" enctype="multipart/form-data" method="post">
    <input type="radio" value="male" name="gender" checked="checked"/>Male
    <br />
    <input type="radio" value="female" name="gender" />Female
    <br />
    <input value="Submit" onclick="return inputval()" type="submit" />
</form>
<div id="output"></div>

var output = document.getElementById("output");
var genderInputs = document.getElementsByName("gender");
var anyChecked = false;

for (var j = 0; j < genderInputs.length; j++) {
    if (genderInputs[j].checked === true) {
        anyChecked = true;
        break;
    }
}

output.textContent = "any checked: " + anyChecked;

http://jsfiddle.net/F8XGU/1/

于 2013-03-22T18:37:00.490 に答える
0

あなたは jQuery を置いたので、私はそれを使います。 document.getElementById('checked')存在しません。あったとしても、それは 1 つの要素にしか適用されません。[name=gender]チェックされている要素があるかどうかを確認するには、各要素を反復処理する必要があります。jQuery はこれを簡単にします:

$(".inputval").on('click', function (e) {
    if (!$("[name=gender]:checked").length) {
        alert('something something gender');
        e.preventDefault();
    }
});

http://jsfiddle.net/ExplosionPIlls/s2YfU/

編集:非jQueryソリューションもquerySelectorAll('[name=gender]:checked')機能するため、非常に簡単です。

于 2013-03-22T18:00:28.823 に答える
0

これを試してください:checked

<script type="text/javascript">
 function inputval(){
    if($(':checked').length < 0)
    {
        alert("Select at least male or female.");
        return false;
    }   
}
</script>
于 2013-03-22T17:59:05.217 に答える
0

検証の必要はありません。デフォルトでは、1 つのラジオ ボタンをオンにします。

<form name="formreg" enctype="multipart/form-data" method="post">
     <input type="radio" value="male" name="gender" checked="true" /> Male<br />
      <input type="radio" value="female" name="gender" /> Female<br />
      <input value="Submit" onclick="return inputval()" type="submit" />
    </form>
于 2013-03-22T18:02:06.880 に答える