使用不同的变量调用递归函数

Call a recursive function with different variables

本文关键字:变量 调用 递归函数      更新时间:2023-09-26

我是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;

这应该在完成第一个单选按钮后立即调用。

请帮帮我。

"递归"在这里是错误的词。你只想在所有元素上循环。

把所有的收音机都拿来,然后循环播放。然后获取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;
    }
});