0

Webフォームがあり、このphpフォームで無線コードを設定する方法は次のとおりです。

<input type="radio" name="2074" id="2074" value="Yes" class="valuetext" >Yes
<input type="radio" name="2074" id="2074" value="No" class="valuetext" >No

テキストフィールドに適したカスタム検証コードに取り組んでいますが、ラジオボタンで問題が発生するだけなので、これがチェックボックスの問題になると確信しています。

これが検証するコードです、

function blank(field) {
    if ((field.type == "text" || field.type == "textarea") && (field.value == " " || field.value == ""))
    {
        return true;
    }
    else if ((field.type ="radio" || field.type == "checkbox") && (!(field.checked || field.selected || field.selectedIndex > -1)))
    {
        return true;
    }
    else {
        return false;
    }
}

ただし、ラジオボタンに関しては、最初に遭遇したラジオボタンのみをチェックします。たとえば、検証を実行し、セット内のどちらの無線もチェックされていない場合、それは機能し、必要なエラーメッセージを表示しますが、それは空の最初のボタンをチェックしたためです。

ラジオの2番目のオプションである「いいえ」を選択すると、正しく機能しません。表示されるべきでないときにエラーメッセージが表示されます。

ラジオの最初のオプションである「はい」を選択すると、期待どおりに機能します。

JavaScriptでグループ内のすべての無線を取得し、そのグループ内の無線がチェックされているかどうかを確認するにはどうすればよいですか?

前もって感謝します。

調べる必要のあるフィールドを収集する関数: *また、これは、フィールドリストのデータを提供する上記のjsonスクリプトです*

var field = [], blankFields = [],
        listText = [], listItem = [], fieldId = [], label = [];

function checkRequired(fieldList) {
    for (var i = 0; i < fieldList.length; i++)
    {
        listText = fieldList[i];
        listText = listText.substring(1, listText.length - 1);
        listItem = listText.split("||");
        fieldId = listItem[0];
        label = listItem[1];
        field = document.getElementById(fieldId);

        if (visible(field) && blank(field)){
            blankFields.push(label);
        }
    }
    //return blankFields;
    if (blankFields.length > 0) {
        displayError(blankFields);
    }
}
4

2 に答える 2

0

を使用document.getElementsByName("2074")してから繰り返し処理して、チェックされているものがあるかどうかを確認できます。

関連する質問: JavaScriptで、指定された名前のページ内のすべてのラジオボタンを取得するにはどうすればよいですか?

于 2013-01-24T18:35:09.240 に答える
0

私は人生を楽にするいくつかのjqueryを混ぜることに決めました:

else if (field.type=="radio")
                {
                 var radiocheck = $('input[type="radio"][name="' + field.name + '"]:checked').size() > 0;
                 if (radiocheck == false){
                     return true;
于 2013-01-28T14:04:24.173 に答える