2

我是 JavaScript 新手。我正在做一个反馈表,其中有 12 个单选按钮需要单独验证,当我单击特定值时将显示一个文本区域。

在这里,当我单击该按钮时,应该强制输入我正在显示的文本区域(例如:当我在结果问题中单击失败选项时,我应该提及他在哪个主题中通过该文本区域失败。类似的东西) .

为此,我编写了代码,它与第一个单选按钮一起工作正常,但无法为剩余的按钮递归调用它。

我需要在函数中递归调用此代码,但我的变量每次都需要更改。就像第二次一样,我应该使用 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 回答