代码之家  ›  专栏  ›  技术社区  ›  sheila.ar

使用PHP中的标记选择操作

  •  0
  • sheila.ar  · 技术社区  · 6 年前

    我试着做一个简单的操作(加、减或乘)。 99+5=104 形式

    <select> + <input> = result
    

    在输入标签之间,没有问题,问题是当我有一个从bd中选择的数字列表时。

    在BD中,以下数据可用。如你所见,折扣与你的身份证不符。

    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 回复  |  直到 6 年前
        1
  •  1
  •   Jason    6 年前

    如果您出于任何原因需要将这些ID值保留在其中,那么稍微更改一下您的javascript还可以使用select标记选项中的文本:

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

    这将返回预期的结果。

        2
  •  2
  •   gaetanoM    6 年前

    你可以使用:

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

    因此,您可以更改为:

    n1=document.f1.cveDiscount.value;
    

    到:

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

    无论如何,我建议使用 .addEventListener() 在dom,改为内联事件处理程序。

    片段:

    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>
        3
  •  1
  •   Heichou    6 年前

    只需更改内部值 option 具有 discount

    <option value="<?PHP echo ''.$row['discount'];?>"><?PHP echo ''.$row['discount'];?></option>
    

    这样你就可以轻松地通过 折扣 作为价值而不是它 id

        4
  •  1
  •   Harshil Doshi    6 年前

    当前您显示的是 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>