首页 > 解决方案 > 我想用从 ajax 帖子返回的值更新 html 表单中数字字段的最小值而不刷新页面

问题描述

我目前在拍卖网站上工作。我有一个表单,如果用户提出新的出价,新的出价会通过 ajax 发布到 php 文件以更新数据库,然后返回以输出为 html 中的新最高出价。

   var aucid = "<?php echo $auctionID; ?>";

   $.ajax({
   url: "JqueryPHP/Price.php",
   method: "POST",
   data: {'auctionid': aucid },
   success: function (result) {
    $('#price').html(result);

    }
         });


        }, 333);


  $("input[name='auctionid']").val("<?php echo $auctionID; ?>");

  $('form').bind('submit', function (event) {


   event.preventDefault();// using this page stop being refreshing 



      $.ajax({

       type: 'POST',
        url: 'JqueryPHP/HighestBid.php',
        data: $('form').serialize(),
        success: function () {
          alert('form was submitted');
        }
      });

    });

  <form> 
        <input type="number"min="<?php echo $startingprice?>"  style="width: 
       10em;" size="35" 
       name="newbid" id="newbid" tabindex="1" class="form-control"  
        placeholder="New Bid €" value="" required>
                                                <br>

                        <div class="form-group">
                                    <div class="row">

    <input type="submit" name="submit" id="submit" tabindex="2" class="form- 
    control btn btn-login" style="width: 14em" value="submit">

                                    </div>
                                </div>
                              <input name='auctionid' style="display:none"/>  



                                                  </form>

      <?php
      //JqueryPHP/Price.php
     $auctionid = $_POST['auctionid'];
     $conn = new mysqli('localhost', 'root', '', 'auctionsite');
     $sql='SELECT  * FROM auction WHERE auctionid="'.$auctionid.'"';
      if($rs=$conn->query($sql)){ 

   $row=$rs->fetch_assoc();
   $highestbid = $row["highestbid"];
   }

        echo $highestbid;

 //JqueryPHP/HighestBid.php

 if (isset($_POST['newbid'])) 
 {
  $newbid=$_POST['newbid'];

      $userid = $_SESSION['userid'];
  $auctionid = $_POST['auctionid'];
   $conn = new mysqli('localhost', 'root', '', 'auctionsite');
 $sql = "UPDATE auction
    SET highestbid = '$newbid', useridhighestbid = '$userid'
    WHERE auctionid = '$auctionid'";
   if(@$conn->query($sql)){  //execute the query and check it worked    
                        return TRUE;
                    } 

   }

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

问题是一个人可以输入低于当前最高出价的出价,这是您不应该被允许的。当新的最高出价得到更新时,一个人可以输入的最低出价仍然是起始价格,因为我不确定如何使用 ajax 帖子返回的新最高值来更新表单中的最小值新的最高价。

我绝对知道我应该使用 javascript 而不是 php 来更新表单中的最小值,我只是不知道该怎么做,因为我对 javascript 很陌生。

标签: javascriptjqueryhtmlajaxforms

解决方案


要使用 JavaScript 更改输入字段的值,您可以使用如下内容:

document.getElementById('newbid').value = valueReturnedFromAjax;

你只需要用valueReturnedFromAjax你得到的新值替换。PHP 只给输入值它的初始值,所以它会被覆盖。


推荐阅读