2

私はjavascriptを初めて使用します。個別に検証する必要のある12個のラジオボタンがあり、特定の値をクリックするとテキストエリアが表示されるフィードバックフォームを作成しています。

ここで、そのボタンをクリックすると、表示されているテキストエリアを必須入力する必要があります(たとえば、結果の質問で[失敗]オプションをクリックすると、そのテキストエリアで失敗した件名を指定する必要があります。そのようなもの) 。

このために、私はコードを作成しました。最初のラジオボタンで正常に動作していますが、残りのボタンに対してこれを再帰的に呼び出すことはできません。

このコードを関数で再帰的に呼び出す必要がありますが、変数は毎回変更する必要があります。2回目と同様に、option2、text2を使用する必要があります。同様に、次の呼び出しoption3、text3などでも使用します。

var option = $("#form1 input[@name=radio1]:checked").val();
var text = document.getElementById("text1").value;

if (!$("#form1 input[@name=radio1]:checked").val()) {
    alert("Please fill all the fields");
    return false;
    errs++;
} else if (option == "3" && trim(text) == "") {
    alert("Please enter comments.");

    return false;

}

このコードは、var option1からoption10、および同じtext1からtext10に対して呼び出す必要があります。好き:

var option2 = $("#form1 input[@name=radio2]:checked").val();
var text2 = document.getElementById("text2").value;

これは、最初のラジオボタンが完了するとすぐに呼び出されます。

私を助けてください。

4

1 に答える 1

3

「再帰的」はここでは間違った言葉です。すべての要素をループしたいだけです。

すべてのラジオを入手して、それらをループします。次に、IDと、そのIDに関連付けられているすべてのフィールドを取得します。

jQueryを使用していると想定しているので、次に例を示します。

// Note: The "@" is not needed in jQuery
var radios = $("#form1 input[name^='radio']"); // "^=" means "starts with"
radios.each(function(){
    var id = this.name.replace('radio', ''); // this will get the number, eg: 1
    var option = $(this).val();  // get radio's value
    var text = $('#text'+id).val();  // get textX's value

    if(!$(this).is(':checked')){ // check if radio is checked
        alert("Please fill all the fields");
        errs++;  // make sure to do this before "return false"
        return false;  // break the .each loop
    }
    else if (option == "3" && trim(text) == "") {
        alert("Please enter comments.");
        return false;
    }
});
于 2012-07-12T15:07:02.440 に答える