0

データベース

$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>

質問: このコードは、データベースのテーブル フィールドでコンボボックスを作成しています。私の問題は、一度選択するとフィールドを繰り返すことができないことです。コードのどこにエラーがありますか? または、私は何が間違っていると思いますか?

それはそのようになるはずでした: http://jsfiddle.net/JaVVe/1/

4

2 に答える 2

1

現場での例は

<option val="Opt1">

あなたのhtmlvalueでは代わりに属性valなので、変更する必要があります

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

newComboBox.find('option[value="' + selectedValue + '"]').remove();
于 2012-11-27T11:16:25.273 に答える
1

問題は、あなたがチェックしていることですsize() > 8。そのため、それが機能するには、8 つ以上のオプションが必要です。に変更しsize() > 2ます。それ以外は、コードが機能します。

もう 1 つの問題は、オプションの値を引用符で囲んでいないことです。引用符を追加:

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

フィールドの後にスペースもあります:

 $r['field ']
 //       ^ here, remove that
于 2012-11-27T11:01:21.053 に答える