我有一些由其他人编写的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"/>
答案 0 :(得分:0)
据我所知,这就是发生的事情:
citNumFirst
和dateFirst
是初始输入。更改citNumFirst
输入时(注意:这肯定需要输入验证),将出现“单击此处添加另一个”链接。单击它将递增countCitNum
,将其发送到Ajax调用,如果成功,则显示另一组日期/数字输入,可用于创建新的引文编号。
Ajax调用:我不完全确定这里发生了什么,因为它传递的是将添加的输入字段(countCitNum
)的索引(开始)零,不计算初始值)。它没有传递实际的数字或日期,看起来它希望得到与结果相同的索引。
cnValues
和cdValues
存储cnArray
和cdArray
,分别用于存储使用这些新创建的输入添加的引文的数字和日期领域。 cnArray[0]
对应于输入#newCitNum_0
中的值; cdArray[0]
对应#newDate_[0]
。对这些输入字段所做的任何更新都会导致对数组的更改,但我没有看到它们在代码片段中的任何位置使用(但由于它们是隐藏的输入,因此可能在表单提交后使用它们。)