Det finns tre sätt att lösa det:
- Överför maxinformation till front-end
- Kontrollera när användaren skickar in
- Asynkron datakontroll, som
Jquery
ajax
Överför maxinformation till front-end
Placera bara din maxinformation i ett dolt område och använd javascript för att få och kontrollera det.
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);"/>
Men det här sättet är rekommenderas inte och bör undvikas, eftersom användare kan få din lagringsdata genom att kontrollera källkoden.
Kontrollera när användaren skickar in
Kontrollera beloppet med maxvärde på serversidan, vilket leder till dålig användarupplevelse.
Asynkron datakontroll
Detta rekommenderas och används mest, som får data asynkront. Du kan prova jquery
.
Förutsatt att ditt språk på serversidan är php
, kan du skapa en fil 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
Sedan kan du kontrollera beloppet med 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!");
});
});