2012-01-01 81 views
0

我在页面上实现了从一对选择列表并添加添加/删除按钮。 了jQuery JavaScript是简单和行之有效的:如何在HTML中提交列表的内容(由jQuery修改)?

function add(){ 
    $('#pool option:selected').each(function() { 
      $('#chosen').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>"); 
     $(this).remove(); 
    }); 
}); 
function remove(){ 
    $('#chosen option:selected').each(function() { 
      $('#pool').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>"); 
     $(this).remove(); 
    }); 
}); 

我想将“选择”列表中的内容提交到我的服务器。

我试图将列表放在表单中。当我提交表单时,除非我真的选择了“选择”列表中的项目,否则服务器不会收到任何内容。

这是一段代码: < form action =“URL”method =“POST”onsubmit =“preSubmit();” > ...

function preSubmit(){ 
$('#chosen').each(function(){ 
    $(this).attr("selected","selected"); 
}); 
}; 

没有工作! 如何获取传送到服务器的“选定”列表中的项目?

回答

1

$(this).attr("selected","selected");一次只能应用一个option。在循环的每一步中,您都会有效地覆盖它。

您没有提供您的HTML的不足,但这应该或多或少你所需要的:

function preSubmit() 
{ 
    var form = $('#chosen').closest('form'); 

    $('#chosen option').each(function() 
    { 
     form.append('<input type="hidden" name="' + $(this).val() + '" value="' + $(this).text() + '" />'); 
    }); 
}; 

附:考虑缓存你的选择器。

在附注上,您应该使用prop而不是attr(如果您使用的是最新版本的jQuery)。

+0

谢谢@约瑟夫,我把你的答案的最重要的部分是在选择器中包含'选项'。我保留了原来的代码(这是打开选定的属性),它的工作。现在,我将根据您的建议研究添加相应隐藏字段的优势。 – adaj21 2012-01-01 16:37:16