2012-01-01 82 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