我知道这与我之前的问题类似但是它略有不同。
我有这个脚本将每个'dropped'元素添加到列表中。现在我需要将它添加到变量/隐藏字段中,以便我可以通过表单将其传递到下一页。
此刻我正在运行它。它会警告每一个,但它不仅仅针对掉落的每个项目,但是如果有10个项目被丢弃,则每个项目下降10次,而不是每个项目掉落10次。
任何帮助都会很棒。
//Record and add dropped items to list
var txt = $("#listbox");
var dtstart = copiedEventObject.start + '\n'
var caltitle = copiedEventObject.title
var txt = $('#listbox');
txt.append("<li class ='listItem'> "+dtstart +"</li>")
var listItems = $('.listItem');
$('#calendarform').submit(function() {
listItems.each(function(){ //For each event do this:
alert( listItems.text() );
});
return false;
});
// remove the element from the "Draggable Events" list
$(this).remove();
答案 0 :(得分:1)
问题在于此代码
listItems.each(function(){ //For each event do this:
alert( listItems.text() );
});
您正在提醒每个列表项的所有列表项的文本。
使用jQuery(this)访问每个块中的当前项
listItems.each(function(){ //For each event do this:
alert( $(this).text() );
});
假设您的代码位于drop事件处理程序中,每次删除时都会添加一个提交处理程序。这意味着每次删除时,都会排队另一个提交事件。这可能不是所希望的。将此提交(function(){})块移动到drop handler之外,以防止它多次触发该函数。
$('#calendarform').submit(function(e) {
var listItems = $('.listItem');
listItems.each(function(){ //For each event do this:
alert( listItems.text() );
});
e.preventDefault();//stop normal behavior
return false;
});
要动态创建元素,只需将jQuery传递给html,然后将append
传递给您的表单。
$('<input type="hidden" name="listItem[]"/>').appendTo("#calendarForm").val(listItem.text())
你可能不得不使用name元素来让它作为服务器端语言的数组提交,但你也在each
循环中,它为你提供了一个索引,所以你可以执行以下操作。
$('#calendarform').submit(function(e) {
var form = $(this);
var listItems = $('.listItem');
listItems.each(function(index){ //For each event do this:
var listItem = $(this);
$("<input type='hidden'/>").val(listItem.text()).appendTo(form).attr('name', 'listItem[' + index + ']');
});
e.preventDefault();//stop normal behavior
return false;
});