【发布时间】:2010-05-17 18:59:07
【问题描述】:
在使用 jQuery UI 对话框和在其中使用复选框值时遇到一些问题。我所拥有的是一个表格,其中包含前几个选项和一个显示“更多”的链接。当用户单击它时,他们会打开一个对话框,并且可以从完整的选项列表中进行选择。
对于第一批复选框(不在对话框中),我将它们的值设置为单击时的隐藏字段,然后在提交表单时使用该字段:
HTML
<div class="col cuisines cuisineSelect">
<ul>
<li><input name="cuisine" value="165" type="checkbox" id="c-165"><label for="c-165">British</label></li>
<li><input name="cuisine" value="911" type="checkbox" id="c-911"><label for="c-911">Chinese</label></li>
<li><input name="cuisine" value="1047" type="checkbox" id="c-1047"><label for="c-1047">European</label></li>
</ul>
</div>
添加到隐藏字段的Javascript
$(function() {
$('.cuisineSelect input').click(updateHiddenCuisineValues);
updateHiddenCuisineValues();
});
function updateHiddenCuisineValues() {
var allVals = [];
$('.cuisineSelect :checked').each(function() {
allVals.push($(this).val());
});
$('#cuisineString').val(allVals)
}
这很好用,我可以在我的#cuisineString 中看到它正在填充。
但是我的对话框,我是通过以下方式生成的:
对话框 Javascript
$("#moreCuisines").click(function(){
$("#cuisineExtra").dialog({
width: '200',
dialogClass: 'cuisineSelect',
buttons: {
"Refresh Search": function() {(
$(this).dialog("close")
);}
},
});
return false;
})
对话框 DIV HTML
<div id="cuisineExtra" class="hiddenSearchPanel" title="Available Cuisines">
<div class="col">
<ul>
<li><input name="cuisine" value="165" type="checkbox" id="ch-165"><label for="c-165">British</label></li>
<li><input name="cuisine" value="911" type="checkbox" id="ch-911"><label for="c-911">Chinese</label></li>
<li><input name="cuisine" value="1047" type="checkbox" id="ch-1047"><label for="c-1047">European</label></li>
<li><input name="cuisine" value="166" type="checkbox" id="ch-166"><label for="c-166">French</label></li>
<li><input name="cuisine" value="167" type="checkbox" id="ch-167"><label for="c-167">Indian</label></li>
<li><input name="cuisine" value="1027" type="checkbox" id="ch-1027"><label for="c-1027">Indonesian</label></li>
</ul>
</div>
</div>
我看不到的是,如果我单击此处的复选框,它不会填充到 DIV 中,但是如果我关闭它并单击对话框外的一个复选框,它不仅会填充 #cuisineString 与最新点击,但我在对话框中检查的所有点击。
我确定我需要添加一些东西,但我们的头发已经被撕成原来的样子了!
最后,我应该提出一个新问题,但如果有人有想法,我还想做的是,如果有人说在对话框或页面上点击“英国”,那么它应该选中两个框对话框和原始对话框,并将值添加到#cuisineString,因为我将前几个选项加倍。
【问题讨论】: