使用Jquery比较每个数组索引的Input文本数组控件和Select选项数组控件的值

时间:2013-10-25 20:14:48

标签: javascript jquery arrays

如何比较每个输入文本和选择控制数组的相同索引的值?

var qtype_array = new Array();
$('select[name="qtype[]"]').each(function(){
    qtype_array.push($(this).val());
}); 

var true_ans_array = new Array();
$('input[name="true_ans[]"]').each(function(){
    true_ans_array.push($(this).val().toUpperCase());
});

阵列内容:

qtype_array - ["MULTIPLE", "SINGLE","DESC"]
true_ans_array - ["AC", "A", ""] 

我想检查如果在索引0的qtype_array中,如果文本是“MULTIPLE”,则在true_ans_array的同一索引0处,文本应至少为2个字符,如果qtype_array中的文本为“SINGLE”,则为文本长度同一索引的true_ans_array中的内容应为1,如果在qtype_array中,如果文本为“DESC”,则true_ans_array中的文本内容长度应为0.

我正在开发一个在线考试系统。

我非常困难,无法想到解决方案......

2 个答案:

答案 0 :(得分:0)

请参阅此fiddle,以下是解释:

假设您已从页面收集了所有信息,您应该已经使用数据填充了qtype_arraytrue_ans_array数组。

像这样:

var true_ans_array = new Array();
$("input[name='true_ans[]']").each(function(){
    true_ans_array.push(this.value);
});

var qtype_array = new Array();
$('select[name="qtype[]"]').each(function(){
    qtype_array.push($(this).val());
});

现在两个数组都包含其中的元素。 接下来是要经历所有元素。我假设两个数组都有相同数量的元素。

for (i=0; i < qtype_array.length; i++) {

switch (qtype_array[i]) {
    case "MULTIPLE": if (true_ans_array[i].length >= 2) 
                      {alert("it's >= than 2")} 
                     break; 
    case "SINGLE": if (true_ans_array[i].length == 1) 
                      {alert("it's == to 1")}
                     break; 
    case "DESC": if (true_ans_array[i].length == 0) 
                      {alert("it's == to 0")}
                     break; 
    default: alert("neither Multiple, Single or Desc");

}

}

答案 1 :(得分:0)

您可以同时遍历两个数组,检查它们是否具有您在每个位置所期望的值。

只是检查两个数组是否具有相同的大小以及每个位置的值is a stringnull.length会抛出错误。

for ( var i = 0; i < qtype_array.length; i++ ) {
    var q = qtype_array[i];
    var a = true_ans_array[i];
    switch ( q ) {
        case "MULTIPLE":
            if ( a.length < 2 ) {
                alert('q == "MULTIPLE" but a.length < 2');
            }
            break;
        case "SINGLE":
            if ( a.length != 1 ) {
                alert('q == "SINGLE" but a.length != 1');
            }
            break;
        case "DESC":
            if ( a.length > 0 ) {
                alert('q == "DESC" but a.length > 0');
            }
            break;
        default:
            alert('q != "MULTIPLE", "SINGLE" and "DESC"');
            break;
    }
}