gpt4 book ai didi

php - 双选框无法正确发布

转载 作者:行者123 更新时间:2023-11-28 00:17:35 29 4
gpt4 key购买 nike

我仍在努力学习 jquery,所以请多多包涵。我有一个双选框,只有当我将第二个选择框移到那里后选择所有结果时,它才有效。我想要的是当第一个框将值传输到第二个第二个选择框时,它不需要突出显示选项,而是在表单提交时发布第二个选择框。这是什么我有:

HTML:

<span id="dualselect1" class="dualselect">

<select name="select1[]" multiple="multiple" size="10">
<?php
$c='0';
foreach($lp_name as $lpn){
echo '<option value="'.$lp_id[$c].'">'.$lpn.' ('.$lp_url[$c].')</option>';
$c++;
}
?>
</select>

<span class="ds_arrow">
<span class="arrow ds_prev">&laquo;</span>
<span class="arrow ds_next">&raquo;</span>
</span>
<select name="select2[]" multiple="multiple" size="10">
<option value=""></option>
</select>
</span>

JQUERY:

<script type="text/javascript">
jQuery(document).ready(function(){
var db = jQuery('#dualselect1').find('.ds_arrow .arrow'); //get arrows of dual select
var sel1 = jQuery('#dualselect1 select:first-child'); //get first select element
var sel2 = jQuery('#dualselect1 select:last-child'); //get second select element

sel2.empty(); //empty it first from dom.

db.click(function(){
var t = (jQuery(this).hasClass('ds_prev'))? 0 : 1; // 0 if arrow prev otherwise arrow next
if(t) {
sel1.find('option').each(function(){
if(jQuery(this).is(':selected')) {
jQuery(this).attr('selected',false);
var op = sel2.find('option:first-child');
sel2.append(jQuery(this));
}
});
} else {
sel2.find('option').each(function(){
if(jQuery(this).is(':selected')) {
jQuery(this).attr('selected',false);
sel1.append(jQuery(this));
}
});
}
});
});

PHP:

if(isset($_POST['submit'])) {
var_dump($_POST['select2']);
}

就像我说的,我有这种工作。但是,如果我向 select2 发送一个值,我必须在提交之前突出显示它,否则它不会 POST。有什么想法吗?

最佳答案

我以前遇到过这个问题,您有几个选择。使用 JS,您可以将第二个框中的所有值也插入隐藏字段,或者也可以使用 JS,您可以选择第二个框中的所有值作为表单上的 onsubmit 处理程序。

实际上我以前做过后者,而且效果很好。

最终,一个选择框(多选或单选)只会发送被选中的值——所以这就是为什么它只有在您先选择它们时才有效。它的工作方式很像复选框,其中未选中的值不会发布。

这应该“选择”所有这些:

$('#myform').submit(function() {
var sel2 = $('#dualselect1 select:last-child');
sel2.find('option').each(function(){
$(this).attr('selected',true);
});
});

或者这会将它们放入一系列隐藏字段中:

$('#myform').submit(function() {
var sel2 = $('#dualselect1 select:last-child');
sel2.find('option').each(function(){
var hidden = $('<input type="hidden" name="selectedOptions[]"/>');
hidden.val($(this).val());
sel2.after(hidden);
});
});

然后在 PHP 中,您将使用 $_POST['selectedOptions']; 获取这些值;

关于php - 双选框无法正确发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11191116/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com