2 回答

TA贡献1856条经验 获得超11个赞
我没有做的太晚了!!!
我知道我必须有添加事件的代码作为从表单元素中获取当前值的位置,就像这样;
function setEvents() {
let fieldList = [
{
"fld": "saleDate",
"type": "date"
},
{
"fld": "pickupDate",
"type": "date"
},
{
"fld": "deposit",
"type": "cash"
}
],
tKey = "", tVal = "", tDate = new Date();
// begin loop through JSON of elements
for(let pair of fieldList) {
// add change event listener but don't get element value yet!
$('#' + pair['fld']).bind('change',
{k: pair['fld'], t: pair['type']},
function (event) {
// in here is where I should get current form values!
let tKey = "", tVal = "", tDate = new Date();
switch (event.data.t) {
case "date":
tKey = event.data.k;
// this grabs fresh data from the form!
tDate = new Date($('#' + event.data.k).val());
tVal = tDate.toLocaleDateString('en-GB');
break;
default:
tKey = event.data.k;
// and so does this!!
tVal = $('#' + event.data.k).val();
}
updateSummary(tKey, tVal);
});
}
}
感谢您的新鲜双眼!

TA贡献1828条经验 获得超3个赞
在事件侦听器函数中获取值,而不是在绑定时获取。
在事件侦听器中,this是事件目标,并且this.value是元素的值。
for (let pair of fieldList) {
$('#' + pair['fld']).on('change', {
k: pair['fld'],
t: pair['type']
},
function(event) {
let tKey = "",
tVal = "",
tDate = new Date();
switch (event.data.t) {
case "date":
tKey = event.data.k;
tDate = new Date(this.value);
tVal = tDate.toLocaleDateString('en-GB');
break;
default:
tKey = event.data.k;
tVal = this.value;
}
addItem(tKey, tVal);
});
}
添加回答
举报