在组合框中计数所选选项
Count selected option in combobox
我需要一些javascript PHP方面的帮助来解决我的问题。请看下面的代码:
<?PHP
$arrear_per_month = 15000;
?>
<select name="cur_month" id="id_cur_month" multiple="multiple">
<option value="">Month</option>
<option value="jan">January</option>
<option value="feb">February</option>
<option value="mar">March</option>
<option value="apr">April</option>
<option value="may">May</option>
<option value="jun">June</option>
<option value="jul">July</option>
<option value="aug">August</option>
<option value="sep">September</option>
<option value="oct">october</option>
<option value="nov">November</option>
<option value="dec">december</option>
</select>
Your current arrear: <input id="id_cur_arrear" type="text" name="arrear" value="" readonly="readonly" />
我想做的是:
- 计算选择了多少个选项
- 将所选选项的数量乘以$arrear_per_month
- 在字段输入中显示结果,如上图所示(欠费)
示例:
- 假设二月、三月和四月被选中
- 因此,所选选项的数量为3
- 然后3*$arrear_per_month=45000
- 所以我需要显示45000作为拖欠金额
- [edited]我需要在不点击的情况下显示它(类似于onChange)
我想这正是我需要的,请给我一些帮助。
提前感谢
var numbersChecked = $('#id_cur_month').find(":selected").length;
$("#id_cur_arrear").val(numbersChecked * <?= $arrear_per_mnth; ?>);
您可以通过jQuery(使用更少的代码)轻松完成此操作。然而,如果你正在专门寻找JavaScript代码,你可以试试这个-
<script type="text/javascript">
function update(){
var apm = Number("<?php echo $arrear_per_month;?>");
var cm = document.getElementById("id_cur_month").selectedOptions.length;
var sel_cnt = (apm * cm);
document.getElementById("id_cur_arrear").value = sel_cnt;
}
</script>
将onchange
事件添加到您的select
框-
<select name="cur_month" id="id_cur_month" onchange="update()" multiple="multiple">
通过单击或键盘箭头键选择选项都可以。
在javascript中,就是这样做的
var sel = document.getElementById('id_cur_month');
alert(sel.selectedOptions.length);
上面的代码应提醒所选选项的数量。
但是,您确实需要进行一些额外的编码,因为您无法将javascript变量传递给php代码。
您可以将php变量声明为javascript变量。
<script>
var arrear_per_month = <?php echo $arrear_per_month ?>;
var sel = document.getElementById('id_cur_month');
var total = arrear_permonth * sel.selectedOptions.length;
alert(total);
</script>
根据Andrex的建议,我尝试过这样修改脚本,但没有成功。
<?PHP
$arrear_per_month = 15000;
?>
<script type="text/javascript" language="javascript">
var sel = document.getElementById('id_cur_month');
alert(sel.selectedOptions.length);
var arrear_per_month = <?php echo $arrear_per_month ?>;
var sel = document.getElementById('id_cur_month');
var total = arrear_permonth * sel.selectedOptions.length;
alert(total);
document.chk_arrear.arrear.value = total;
</script>
<form name="chk_arrear">
<select name="cur_month" id="id_cur_month" multiple="multiple">
<option value="">Month</option>
<option value="jan">January</option>
<option value="feb">February</option>
<option value="mar">March</option>
<option value="apr">April</option>
<option value="may">May</option>
<option value="jun">June</option>
<option value="jul">July</option>
<option value="aug">August</option>
<option value="sep">September</option>
<option value="oct">october</option>
<option value="nov">November</option>
<option value="dec">december</option>
</select>
Your current arrear: <input type="text" name="arrear" value="" readonly="readonly" />
</form>
警报和输入文本都不起作用。你能纠正这个脚本吗?
JQuery
$("#id_cur_month").click(function () {
var len = 0;
$("#id_cur_month").children(":selected").each(function () {
len += ($(this).val() ? 1 : 0);
});
var res = len * (parseInt($("#id_cur_arrear").val() || 0));
$("#id_cur_arrear_res").val(res);
});
演示
Javascript
var select = document.getElementById("id_cur_month");
console.log(select);
select.onclick = function () {
var opts = select.options;
var len = 0;
for (i = 0; i < opts.length; i++) {
if (opts[i].selected && opts[i].value) len++;
}
document.getElementById("id_cur_arrear_res").value = len * (parseInt(document.getElementById("id_cur_arrear").value || 0))
};
使用(parseInt(document.getElementById("id_cur_arrear").value || 0))
的<?= $arrear_per_mnth; ?>
实例
演示
感谢大家。它正在运行。
<?PHP
$arrear_per_month = 15000;
?>
<script type="text/javascript" language="javascript">
function update(){
var apm = Number("<?php echo $arrear_per_month;?>");
var cm = document.getElementById("id_cur_month").selectedOptions.length;
var sel_cnt = (apm * cm);
document.getElementById("id_cur_arrear").value = sel_cnt;
}
</script>
<form name="chk_arrear">
<select name="cur_month" id="id_cur_month" multiple="multiple" onchange="update()">
<option value="">Month</option>
<option value="jan">January</option>
<option value="feb">February</option>
<option value="mar">March</option>
<option value="apr">April</option>
<option value="may">May</option>
<option value="jun">June</option>
<option value="jul">July</option>
<option value="aug">August</option>
<option value="sep">September</option>
<option value="oct">october</option>
<option value="nov">November</option>
<option value="dec">december</option>
</select>
Your current arrear: <input type="text" id="id_cur_arrear" name="arrear" readonly="readonly" />
</form>
相关文章:
- Jquery捕获选项卡+一些组合键
- 如何使用jquery将两个字段组合为下拉菜单中的选项
- 通过参数设置html组合框的选定选项
- 如何在组合堆叠条形图上设置pointDot选项
- 当表单控件选项具有多个参数时,如何在组合框中填充所选项目
- Webix组合/richselect中的筛选选项
- 组合$window和$stateProvider以打开一个新的浏览器选项卡窗口
- Jquery或Javascript从组合框中删除除一个选项之外的所有选项
- 将 Jquery 可筛选产品组合转换为选项选择
- 节点 - 用于发送电子邮件的选项,发送网格和节点邮件之一或组合
- 计数并显示组合的选择选项值
- 动态地将选项添加到 Angular 选定的组合框中
- 如何使用引导组合框创建自定义选项
- 使jQuery组合框的一个选项不可选择
- 根据其他组合框中的选定选项更改下拉选项
- 在组合框中计数所选选项
- 2选择“选项”.“组合值和链接”
- 需要从多选选项组合值形成一个url与javascript
- 如何使用js或jquery将选项组合传递到PHP表单
- 从下拉菜单中选择选项组合以生成结果