在PHP中使用标签选择操作

时间:2019-02-09 22:26:01

标签: javascript php mysql

怎么样,我尝试执行一个简单的操作(加,减或乘)。 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。

问题在于,在操作时,它使用ID的值= 2而不是99,因此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>

4 个答案:

答案 0 :(得分:2)

您可以使用:

  

selectedOptions:...包含当前选定元素中包含的元素列表。所选选项的列表是一个HTMLCollection对象,每个当前所选选项都有一个条目。

因此,您可以更改:

n1=document.f1.cveDiscount.value;

收件人:

n1 = document.f1.cveDiscount.selectedOptions[0].textContent;

无论如何,我建议在dom准备就绪时使用.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>

答案 1 :(得分:1)

只需用/work/waterhouse_team/apps/schnablelab更改signin() { var ajaxResp = $.ajax({ type: "POST", url: "XXX", dataType: 'json', data: { 'uid': "50", 'pass': "100" }, success: function(response){ successLogin(response); }, }); } successLogin(msg){ console.log(msg); } 内的值

view.frame = self.bounds

通过这种方式,您可以轻松地将option传递为值,而不是其discount

答案 2 :(得分:1)

如果出于某种原因需要将这些id值保留在其中,则稍微更改javascript还可以让您使用select标记选项中的文本:

var sel = document.f1.cveDiscount;
var n1 = sel.options[sel.selectedIndex].text;

这将返回预期的结果。

答案 3 :(得分:1)

当前,您正在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>