[英]Operations with tag select in PHP
怎么样,我尝试执行一个简单的操作(加,减或乘)。 99 + 5 = 104表格
<select> + <input> = result
在输入标签之间没有问题,问题是当我有一个要从BD中选择的数字列表时。
在BD中,以下数据可用。 如您所见,折扣与您的ID不符。
Id discount
1 100
2 99
3 98
4 96
5 95
如果要执行操作,在列出折扣时,标签
<option value = "<? PHP echo ''. $ row ['id'];?>"> <? PHP echo ''. $ row ['discount'];?> </ option>
该操作通过id而不是折扣完成。 一个总和的示例,我们选择99的折扣,然后将5的金额插入正确的结果= 104。
问题在于,在操作时,而不是99时,其ID的值= 2,因此2 + 5 = 7。
我在执行操作时的问题是,我可以使用折扣值而不是ID。
<html>
<head>
<script language='javascript'>
function fadd(){
n1=document.f1.cveDiscount.value;
n2=document.f1.amount.value;
res=document.f1.resul.value;
res=parseInt(n1)+parseInt(n2);
document.f1.resul.value=res;
}
</script>
</head>
<body>
<form name='f1' action="" method=POST>
<label name=lblnum1>Num 1:</label>
<select name="cveDiscount" class="form-control ">
<?PHP
if ($resultado = $mysqli->query("SELECT id,discount FROM discount order by id desc", MYSQLI_USE_RESULT)) {
while ($row = mysqli_fetch_array($resultado)){
?>
<tr>
<option value="<?PHP echo ''.$row['id'];?>"><?PHP echo ''.$row['discount'];?></option>
</tr>
<?PHP
}
}
?>
<option value="#" selected>Select discount</option>
</select>
<label name=lblnum2>Num 2:</label>
<input type=text name='amount'/>
<input type=button value=" = " onclick="fadd()">
<input type=text name='resul'/>
</form>
</body>
</html>
您可以使用:
selectedOptions :...包含当前选中的元素中包含的元素的列表。 所选选项的列表是一个HTMLCollection对象,每个当前所选选项都有一个条目。
因此,您可以从以下位置进行更改:
n1=document.f1.cveDiscount.value;
至:
n1 = document.f1.cveDiscount.selectedOptions[0].textContent;
无论如何,我建议在dom ready时使用.addEventListener()而不是内联事件处理程序。
片段:
document.addEventListener('DOMContentLoaded', function(e) { document.querySelector('[type=button]').addEventListener('click', function(e) { n1 = document.f1.cveDiscount.selectedOptions[0].textContent; n2 = document.f1.amount.value; res = document.f1.resul.value; res = parseInt(n1) + parseInt(n2); document.f1.resul.value = res; }) })
<form name='f1' action="" method=POST> <label name=lblnum1>Num 1:</label> <select name="cveDiscount" class="form-control "> <option value="1">100</option> <option value="2">99</option> <option value="3">98</option> <option value="4">96</option> <option value="5">95</option> <option value="#" selected>Select discount</option> </select> <label name=lblnum2>Num 2:</label> <input type=text name='amount'/> <input type=button value=" = "> <input type=text name='resul'/> </form>
只需更改带有discount
option
内的价值
<option value="<?PHP echo ''.$row['discount'];?>"><?PHP echo ''.$row['discount'];?></option>
这样,您可以轻松地将discount
作为值而不是其id
传递
如果出于某种原因需要将这些id值保留在其中,则稍微更改javascript还可以让您使用select标记选项中的文本:
var sel = document.f1.cveDiscount;
var n1 = sel.options[sel.selectedIndex].text;
这将返回预期的结果。
当前,您正在UI中显示Discount
的值,但实际上是传递id
作为添加值。 只需从查询中获取折扣并将其作为值放入您的选项标签中,如下所示:
<select name="cveDiscount" class="form-control ">
<?PHP
if ($resultado = $mysqli->query("SELECT discount FROM discount order by id desc", MYSQLI_USE_RESULT)) {
while ($row = mysqli_fetch_array($resultado)){
?>
<tr>
<option value="<?PHP echo ''.$row['discount'];?>"><?PHP echo ''.$row['discount'];?></option>
</tr>
<?PHP
}
}
?>
<option value="#" selected>Select discount</option>
</select>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.