首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >需要解释JavaScript数组以及它们是如何实现的

需要解释JavaScript数组以及它们是如何实现的
EN

Stack Overflow用户
提问于 2013-11-13 12:07:29
回答 1查看 89关注 0票数 1

我有一些由其他人编写的JavaScript,我正在努力弄清楚我们的一些值来自何处,它们是如何格式化的,以及它们是如何处理的。所讨论的值是citNumFirst、dateFirst、cdValues和cnValues。

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

这是我需要帮助的代码。同样,我试图找出这些值citNumFirst、dateFirst、cdValues和cnValues的来源,因为这些值是通过表单提交发送的(根据Fiddler的说法)。

我的想法是,所有这些都可以用PHP更有效地完成,但是我很好奇Ajax在这里是否做了什么,如果没有,那么"cdValues“和"cnValues”作为Javascript数组或使用输入表单的对象发送。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
       <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"/>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-13 13:32:48

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

  • citNumFirstdateFirst是初始输入。当citNumFirst输入被更改时(注意:这肯定需要输入验证),就会出现“单击此处添加另一个”链接。单击它将增加countCitNum,将其发送到Ajax调用,如果成功,则显示一组额外的日期/数字输入,这些输入可用于创建新的引用号。
  • Ajax调用:我不完全确定这里发生了什么,因为它传递的是将添加的输入字段(countCitNum)的索引(从零开始,不包括初始集)。它没有传递实际的数字或日期,看起来它希望收到与结果相同的索引。
  • cnValuescdValues存储cnArraycdArray,它们分别用于存储使用这些新创建的输入字段添加的引用的数字和日期。cnArray[0]对应于输入#newCitNum_0中的值;cdArray[0]对应于#newDate_[0]。对这些输入字段所做的任何更新都会导致数组的更改,但我没有看到它们在代码片段中的任何地方被使用(但由于它们是隐藏的输入,它们可能在表单提交之后使用)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19963292

复制
相关文章

相似问题

Azure Event Hub -逐条使用消息

16

来自Android的Azure Event Hub授权

11

监视Azure Event Hub分区的大小

112

Azure Event Hub使用者组

118

Event Hub的通用AZURE存储帐户

115
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文