有关JavaScript数组及其实现方式的说明

时间:2013-11-13 20:07:30

标签: javascript jquery arrays

我有一些由其他人编写的JavaScript,我正在试图确定一些值的确切位置,格式如何以及使用它们做了什么。有问题的值是citNumFirst,dateFirst,cdValues和cnValues。

这个JavaScript用于递归打开数字和日期的表单字段,然后发出Ajax请求(我认为),但Ajax数据没有任何意义(值为:data:“countCitNum =”+ countCitNum, )

以下是我需要帮助的代码。再一次,我试图找出这些值citNumFirst,dateFirst,cdValues和cnValues来自哪里,因为这些是通过表单提交发送的(根据Fiddler)。

我的想法是,这可以通过PHP更有效地完成,但我很好奇Ajax是否在这里做任何事情,如果不是,值“cdValues”和“cnValues”作为Javascript Arrays发送,或使用输入表格的对象。

$(document).ready(function() {
  var citArray = [];
  var thisCount = 1;
  varcountCitNum = -1;
  var cnArray = [];
  var citNum = '';
  var cnFirst = '';
  var cdArray = [];
  var issueDate = '';

$("#cnValues").val(cnArray);
$("#cdValues").val(cdArray);

  function addCitNumber(){
     var citNumField = document.getElementById("citNumFirst");

      if(citNumField.value ==''){
          var addfield_msg = "<span style='color:#F00;'>Please enter <br />Citation Number</span>";
           $('#addfield_error').removeClass('hideCat');
          $('#addfield_error').append(addfield_msg);

          return false;
      }else{

     countCitNum++;
     var addHTML = '';
     var addDateHTML = ''

     $.ajax({
             type: "POST",
                     url: "/ci/ajaxCustom/addCitNum",
                     data: "countCitNum=" + countCitNum,                         
                     success: function(results){
                         if(results){
                            countCitNum = results;
                         }

                        addHTML = '<div id="newCitNum_'+countCitNum+'"><br /><strong>Citation Number:</strong><br /><input type="text" id="citNumInput_'+countCitNum+'" onchange="setCitNum(this,'+countCitNum+')"/></div>';

                        addDateHTML = '<div id="newDate_'+countCitNum+'"><br /><strong>Citation Issue Date:</strong><br /><input type="text" id="citDateInput_'+countCitNum+'" class="date" onchange="setIssueDate(this,'+countCitNum+')" readonly="readonly"/><a href="javascript:void(0)" onclick="subtractCitNumber('+countCitNum+');"><img src="/euf/assets/themes/standard/images/delete_x.gif" width="29" height="23" border="0" class="imgDelete"/>Delete Citation Number</a></div>';
                         $('#anotherCitNum').append(addHTML);

                         $('#anotherCitDate').append(addDateHTML);
                          document.getElementById("#citDateInput_"+countCitNum);
                          $("#citDateInput_"+countCitNum).attr("disabled",true);
                         $(".date").datepicker();
                     }
     });
    }
     data="";
  }


*//******
 Set Additional Citation Numbers and enable the date input
******/

function setCitNum(obj, countCitNum){
        if(obj.value !='')
        {
            cnArray[countCitNum] = obj.value;
            $("#cnValues").val(cnArray);
            $("#citDateInput_"+countCitNum).removeAttr("disabled");
        }else{
            $('#citDateInput_'+countCitNum).val('');
            $("#citDateInput_"+countCitNum).attr("disabled", true);
        }
}

/******
 Set Issue Date of additonal citations
******/

  function setIssueDate(obj, countCitNum){
    if(obj.value !=''){
    cdArray[countCitNum] = obj.value;
    }else{
    cdArray[countCitNum] = '';
    }
    $("#cdValues").val(cdArray);
}

/******
 Set Citation Number and enable date input unless Citation Number is blank
******/

function setFirstNum(obj){
    cnFirst = obj.value;
    $('#addLink').empty();

    if(obj.value !='')
        {
            $("#citNumFirst").val(cnFirst);
            $("#dateFirst").removeAttr("disabled");
            $('#addfield_error').empty();
            $('#addfield_error').addClass('hideCat');
            var addLinkHTML = "<a href='javascript:void(0)' onclick='addCitNumber();'>Click here to add another Citation Number</a>"
            $('#addLink').append(addLinkHTML);
        }else{
            $('#dateFirst').val('');
            $("#dateFirst").attr("disabled", true);
        }
}

/******
 Set Issue Date of citation
******/

  function setFirstDate(obj){
            var issueDate = obj.value;
            $("#dateFirst").val(issueDate);
}

以下是关联的HTML

       <input type="hidden" name="cnValues" id="cnValues" />
      <input type="hidden" name="cdValues" id="cdValues" />
      <input type="text" id="citNumFirst" onblur="setFirstNum(this)" value=""/></div>
                <div id="addfield_error" class="hideCat"></div>
      </div>
      <div id="anotherCitDate" style="float:left; padding-left:15px">
     <input type="text" id="dateFirst" class="date" onchange="setFirstDate(this)" value="" readonly="readonly"/>

1 个答案:

答案 0 :(得分:0)

据我所知,这就是发生的事情:

  • citNumFirstdateFirst是初始输入。更改citNumFirst输入时(注意:这肯定需要输入验证),将出现“单击此处添加另一个”链接。单击它将递增countCitNum,将其发送到Ajax调用,如果成功,则显示另一组日期/数字输入,可用于创建新的引文编号。

  • Ajax调用:我不完全确定这里发生了什么,因为它传递的是将添加的输入字段(countCitNum)的索引(开始)零,不计算初始值)。它没有传递实际的数字或日期,看起来它希望得到与结果相同的索引。

  • cnValuescdValues存储cnArraycdArray,分别用于存储使用这些新创建的输入添加的引文的数字和日期领域。 cnArray[0]对应于输入#newCitNum_0中的值; cdArray[0]对应#newDate_[0]。对这些输入字段所做的任何更新都会导致对数组的更改,但我没有看到它们在代码片段中的任何位置使用(但由于它们是隐藏的输入,因此可能在表单提交后使用它们。)