我有一个简单的HTML结构,我正在尝试使用Javascript确定列表中的不同项目:
<form>
<button type="submit">Submit</button>
<ul>
<li>
<input type="date" name="dateFrom" value="2014-01-01"/>
<input type="date" name="dateTo" value="2014-01-15"/>
<input type="text" name="elementId" value="1234"/>
<input type="text" name="elementType" value="input"/>
</li>
<li>
<input type="date" name="dateFrom" value="2014-01-01"/>
<input type="date" name="dateTo" value="2014-01-15"/>
<input type="text" name="elementId" value="2345"/>
<input type="text" name="elementType" value="output"/>
</li>
<li> (...) </li>
(...)
</ul>
</form>
我在MeteorJS中的方法。
Template.test.events({
'click button[type=submit]': function (ev, tpl) {
ev.preventDefault();
var serchObjects = [];
var items = tpl.findAll('ul li');
items.forEach(function(each) {
// here I have each list element, but how to get the input elements?
// I thought something like this:
serchObjects.push({
'dateFrom': new Date(each.find('[name=dateFrom]').value),
'dateTo': new Date(each.find('[name=dateTo]').value),
'elementId': each.find('[name=elementId]').value,
'meterType': each.find('[name=elementType]').value
});
});
// (...)
}
});
是否有一些智能流星功能可以做到这一点?我的目标是,使用包含my参数的对象列表。
//编辑:我通过以下方法解决了这个问题:
var dateFrom = tpl.findAll('[name=dateFrom]');
var dateTo = tpl.findAll('[name= dateTo]');
var elementId = tpl.findAll('[name=elementId]');
var elementType = tpl.findAll('[name=elementType]');
dateFrom.forEach(function(each, index) {
serchObjects.push({
'dateFrom': new Date(dateFrom[index].value),
'dateTo': new Date(dateTo[index].value),
'elementId': elementId[index].value,
'elementType': elementType[index].value
});
});