1

我有一些由其他人编写的 JavaScript,我试图弄清楚一些值的确切来源,它们的格式以及它们的处理方式。有问题的值是 citNumFirst、dateFirst、cdValues 和 cnValues。

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

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

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

$(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"/>
4

1 回答 1

0

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

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

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

  • cnValuescdValuesstorecnArraycdArray,它们分别用于存储使用这些新创建的输入字段添加的引文的数字和日期。cnArray[0]对应于 input 中的值#newCitNum_0cdArray[0]对应#newDate_[0]。对这些输入字段所做的任何更新都会导致数组发生更改,但我没有看到它们在您的代码片段中的任何地方使用(但由于它们是隐藏输入,它们可能在表单提交后使用)。

于 2013-11-13T21:32:48.900 回答