2012-11-27 130 views
0

數據庫多動態組合框填充與MySQL

$mySql = "SELECT field FROM fields"; 
$result = mysql_query($mySql); 

HTML:

<select id="combo1" class="combo" data-index="1"> 
<option></option> 
<?php 
while($r = mysql_fetch_array($result)) 
{ 
echo "<option value=" .$r['field '] . ">".$r['field '] ."</option>"; 
} 
?> 
</select> 
<div id="combos"></div> 

jQuery的

<script type="text/javascript"> 
$('body').on('change', '.combo', function() { 
var selectedValue = $(this).val(); 
if (selectedValue !== '' && $(this).find('option').size() > 8) { 
var newComboBox = $(this).clone(); 
var thisComboBoxIndex = parseInt($(this).attr('data-index'), 10); 
var newComboBoxIndex = thisComboBoxIndex + 1; 
$('.parentCombo' + thisComboBoxIndex).remove(); 
newComboBox.attr('data-index', newComboBoxIndex); 
newComboBox.attr('id', 'combo' + newComboBoxIndex); 
newComboBox.addClass('parentCombo' + thisComboBoxIndex); 
newComboBox.find('option[val="' + selectedValue + '"]').remove(); 
$('#combos').append(newComboBox); 
} 
}); 
</script> 

問題: 此代碼創建與我的數據庫talble場組合框。 我的問題是,選擇一次後,字段不能重複。 代碼中的錯誤在哪裏?或者我在做什麼錯誤?

它應該是這樣的:http://jsfiddle.net/JaVVe/1/

+0

什麼當u CONSOLE.LOG(了selectedValue)u得到? – bipen

+0

我應該在哪裏寫?警報(selectedValue)似乎很好。它返回選定的字段 – pleaseDeleteMe

+0

當你alert(selectedValue)..你得到什麼? – bipen

回答

1

的問題是要檢查size() > 8,所以爲它工作,必須有超過8個選項。將其更改爲size() > 2。除此之外,你的代碼將工作。

另一個問題是您沒有將選項值包含在引號中。添加引號:

echo "<option value=\"" .$r['field'] . "\">".$r['field'] ."</option>"; 

你也有後場空間:

$r['field '] 
//  ^here, remove that 
+0

但有超過8個選項。查詢返回9個選項。 – pleaseDeleteMe

+0

顯示您的PHP輸出的HTML。 – MrCode

+0

我不知道是不是你的意思是:[鏈接](http://s8.postimage.org/jhl3mhzvn/combo.png)正如你看到的,comobobox正在重複價值。 – pleaseDeleteMe

1

現場的例子是

<option val="Opt1"> 

在HTML它value屬性,而不是val,所以你需要改變

newComboBox.find('option[val="' + selectedValue + '"]').remove(); 

newComboBox.find('option[value="' + selectedValue + '"]').remove(); 
+0

你說得對:D但是,爲什麼我的另一個例子發佈了FIDLE? :s – pleaseDeleteMe

+0

檢查fidle html-code - 屬性名稱是'val'所以正確的選擇器是'otion [val =「」]'並且你使用屬性'值' – Nemutaisama

+0

好,現在出現新問題。在這個改變之後,我只能「打開」3個複選框。重點是沒有更多的選項 – pleaseDeleteMe