html 多个 select 选择的 js 提交表单
html multiple select chosen js submit form
我在 PHP
中有这个简单的 select 作为回显(使用 Chosen JS
):
echo" <tr>
<th>By country:<br />
<select id=\"firstselect\" name=\"country[]\"
data-placeholder=\"Country...\" multiple class=\"chosen-select\">
<option value=\"dontcare\">dontcare</option>";
foreach ($states as $state) {
echo "<option value=\"" . $state->stat .
"\" >" . $state->stat . "</option>";
}
echo "</select> </th></tr>";
提交并刷新页面后,值与 select 不同。
如果我 select 只有一个选择,这对我有用:
var my_val = '<?=$_POST['price']?>';
$("#cenan").val(my_val).trigger("chosen:updated");
但我不知道如何在数组的情况下将其设置为 selected。你能帮我看看代码吗?我花了几个小时没有任何结果。
您是将表单数据 POST 到同一页面然后刷新它,对吗?
如果是这样,那么您可以稍微更改 PHP 以在页面刷新时通过检查其值是否存在于 $_POST['country']
数组中来将所选选项标记为已选。
此外,由于您将 echo 输出用双引号括起来,因此无需转义变量,因为 PHP 无论如何都会解析它们,只需在 [=] 中需要引号的字符串中使用单引号18=]。眼睛更舒服。
foreach ($states as $state) {
if ((!empty($_POST['country'])) && (in_array($state->stat, $_POST['country']))) {
echo "<option value='$state->stat' selected>$state->stat</option>";
} else {
echo "<option value='$state->stat'>$state->stat</option>";
}
}
假设您 HTML select 如下所示:
<select id='firstselect' multiple class="chosen-select" >
<option value='a'>A</option>
<option value='b'>B</option>
<option value='c'>C</option>
</select>
这是解决方案:
<?php
$arr = ['a','b']; // PHP Sample Array
?>
var js_json = '<?php echo json_encode($arr); ?>';
var js_json_string = JSON.stringify(js_json);
var js_json_array = JSON.parse(js_json_string); // ['a','b']
// initialize
$("#firstselect").chosen();
// Loop for making HTML <select> options selected.
$.each(js_json_array,function(i,v){
$('#firstselect option[value=' + v + ']').attr('selected', true);
});
//Updating Chosen Dynamically
$("#firstselect").trigger("chosen:updated");
我在 PHP
中有这个简单的 select 作为回显(使用 Chosen JS
):
echo" <tr>
<th>By country:<br />
<select id=\"firstselect\" name=\"country[]\"
data-placeholder=\"Country...\" multiple class=\"chosen-select\">
<option value=\"dontcare\">dontcare</option>";
foreach ($states as $state) {
echo "<option value=\"" . $state->stat .
"\" >" . $state->stat . "</option>";
}
echo "</select> </th></tr>";
提交并刷新页面后,值与 select 不同。
如果我 select 只有一个选择,这对我有用:
var my_val = '<?=$_POST['price']?>';
$("#cenan").val(my_val).trigger("chosen:updated");
但我不知道如何在数组的情况下将其设置为 selected。你能帮我看看代码吗?我花了几个小时没有任何结果。
您是将表单数据 POST 到同一页面然后刷新它,对吗?
如果是这样,那么您可以稍微更改 PHP 以在页面刷新时通过检查其值是否存在于 $_POST['country']
数组中来将所选选项标记为已选。
此外,由于您将 echo 输出用双引号括起来,因此无需转义变量,因为 PHP 无论如何都会解析它们,只需在 [=] 中需要引号的字符串中使用单引号18=]。眼睛更舒服。
foreach ($states as $state) {
if ((!empty($_POST['country'])) && (in_array($state->stat, $_POST['country']))) {
echo "<option value='$state->stat' selected>$state->stat</option>";
} else {
echo "<option value='$state->stat'>$state->stat</option>";
}
}
假设您 HTML select 如下所示:
<select id='firstselect' multiple class="chosen-select" >
<option value='a'>A</option>
<option value='b'>B</option>
<option value='c'>C</option>
</select>
这是解决方案:
<?php
$arr = ['a','b']; // PHP Sample Array
?>
var js_json = '<?php echo json_encode($arr); ?>';
var js_json_string = JSON.stringify(js_json);
var js_json_array = JSON.parse(js_json_string); // ['a','b']
// initialize
$("#firstselect").chosen();
// Loop for making HTML <select> options selected.
$.each(js_json_array,function(i,v){
$('#firstselect option[value=' + v + ']').attr('selected', true);
});
//Updating Chosen Dynamically
$("#firstselect").trigger("chosen:updated");