在 php/javascript 中设置来自数据库的最大输入文本数

Set maximum number input text from database in php/javascript

所以我有一个输入文本,用于确定我购物车中商品的购买金额。每个商品都有不同的最大购买数量,最大购买数量(max)是从mysql数据库中获取的。我想如果用户输入的项目数量超过最大限制,则会出现警告。

购物图及金额:

数据库示例:

id_item | item          | brands    | max
- - - - - - - - - - - - - - - - - - - - - - -
1       | Baskom Sedang | Lion Star |2
2       | Pinset Anatomi| Selako    |5
3       | Tromol        | Selako    |7

因此,例如,如果我在 "Baskom sedang" 金额中键入 3(超过最大限制),我希望出现警报。

我知道我应该包括我尝试的 javascript/code,但我对 javascript 没有任何想法,我不擅长 javascript。谢谢..

这会是您要找的吗? Limit numerical values

只需要从数据库中获取值并适当更改上限即可。

服务器端验证很容易。

逻辑是这样的

如果用户点击结帐或提交,然后从数据库中获取最大值,然后将其与用户输入进行比较,如果输入超过最大值则显示错误..:D

有3种方法可以解决:

  • 将最大信息传输到前端
  • 用户提交时检查
  • 异步数据校验,如Jqueryajax

将最大信息传输到前端

只需将您的最大信息放入某个隐藏区域,然后使用 javascript 获取并检查。

function check(obj){
  var max = obj.getAttribute("data-max");
  if(parseInt(obj.value) > parseInt(max)){
    alert("Amount out of max!");
  }
}
<input name="amount" value="0" data-max="3" onkeyup="check(this);"/>

但是这种方式不推荐应该避免,因为用户可以通过查看源代码来获得你的存储数据。

用户提交时检查

服务器端检查最大值,导致用户体验差。

异步数据校验

这个比较推荐使用,异步获取数据。你可以试试jquery.

假设你的服务器端语言是php,你可以制作一个文件checkMax.php:

<?
  $amount = $_POST["amount"];
  $item_id = $_POST["item_id "];
  /* get your max data from database using item_id, then assign $max
     ...
  */
  echo $amount > $max ? 1 : 0

然后您可以通过jquery ajax.

查询金额
<input name="amount" class="amount" data-id="1" value="0"/>
$(".amount").change(function(){
  var amount = $(this).val();
  var item_id = $(this).attr("data-id");
  $.post("checkMax.php", {"amount": amount, "item_id": item_id}, function(data){
     if(data == "1")alert("Amount out of Max!");
  });
});