2012-05-18 18 views
2

我一直在嘗試這個好一段時間,但我似乎無法添加更多選項到多選。我如何添加新的選項到JQuery UI多選

即使當我嘗試添加硬編碼信息時,它也不會被添加。 (Multiselect和JQuery的頭文件位於不同的文件中)。

您可以看到鏈接在這裏的行動: http://www.fakegaming.eu/GoT/index.php?act=selectteam&matchid=3

<?php 
$matches = new Matches(); 
$user = new User(); 
$id = $_GET['matchid']; 
$matchinfo = $matches->getmatch($id); 
$matchplayers = $matches->getmatchplayers($id); 
?> 
<script type="text/javascript"> 
    $(function(){ 
     $.localise('ui-multiselect', {/*language: 'en',*/ path: 'script/locale/'}); 
     $(".multiselect").multiselect(); 

     $("#add").click(function() { 
      $('#players').multiselect('addOptions', 'Test=123'); 
      alert("Handler for .click() called."); 
     }); 
    }); 
</script> 
Kies hier 10 spelers die mee doen aan de match.<br /> <br /> 

<form action='index.php?act=createteam' method='post'> 
    <select id="players" class="multiselect" multiple="multiple" name="players[]"> 
    <?php 
     foreach($matchplayers as $matchplayer){ 
      $userinfo = $user->getuserbyid($matchplayer['user_id']); 
      if($matchplayer['type'] == 0 OR $matchplayer['type'] == 2){ 
       $name = $userinfo['EU_username']; 
       ?> 
       <option value="<?= $name ?>"><?= $name ?></option> 
       <?php 
      } 
     } 

    ?> 
    </select> 
    <input name='name' type='text' id='name' /> 
    <input type='button' id="add" name="add" value="Toevoegen" /> 
    <input name="submit" value="Maak team" type="submit" /> 
</form> 

我可能只是做一些可怕的錯誤,但我只想好好多選一些名稱添加到它。

+0

也許這不是問題,但是您是否嘗試過將'opt.text'和'opt.value' _before_添加到'players'中? – veeTrain

回答

4

你說的是使用jQuery,但我看到很少使用它......這將是一個「jQuery的方式」添加<OPTION>你多選的

$('#players').append($('<option></option>').attr('value', '123').text('345')); 

要選擇屬性:

$('#players option[value="123"]').attr('selected', true); 

取消選擇的屬性:

$('#players option[value="123"]').removeAttr('selected'); 

刪除選項

$('#players option[value="123"]').remove(); 

** 編輯 **

(我沒看你的引用鏈接。我應該是最好的選擇,我是這個小部件的原創作者之一!)

Michael Aufreiter和我工作的小部件的下一個版本實現了您需要的更多功能。在某些配置下它有點不穩定,但應該在基本(默認)設置下足夠穩定。

你可以找到它here,你可以通過選項訪問值:

$('#players').multiselect('addOptions', '123=456'); // value=123, text=456 

對不起,API文檔沒有更新記錄本。這個小部件實際上得到其他貢獻者的支持,我們任何一個原創作者都維護這個版本。

希望這會有所幫助。

+0

熱狗;這是非常方便,你認爲這個問題停止。好的回答 – veeTrain

+0

Github存儲庫也有一個演示頁面,如果你介意看看它。此外,您可以查看源代碼以更多地瞭解這些功能,這是公正的。乾杯! –

+0

感謝您的鏈接和該選項。我只是試了一下,但無論我嘗試做什麼,都沒有做任何事情。 我現在得到了這樣的腳本,點擊處理程序正在工作,但它沒有添加任何內容到選擇。 更新我的問題以顯示當前的代碼。 – Jeffro

0

如果你想提交玩家到你的index.php?act=createteam動作,請確保你在發送請求之前選擇了玩家。

<script> 
    function selectPlayers() { 
     var opts = document.getElementById("players").options; 
     for (var i = 0; i < opts.length; i++) { 
      opts[i].selected = "selected"; 
     } 
     return true; 
    } 
</script> 

<form action='index.php?act=createteam' method='post' onsubmit='selectPlayers()'> 
相關問題