Der er 3 måder at løse det på:
- Overfør maks. oplysninger til front-end
- Tjek, når brugeren sender
- Asynkron datakontrol, såsom
Jquery
ajax
Overfør maks. oplysninger til front-end
Bare placerede dine maksimale oplysninger i et skjult område, og brug javascript til at få og tjekke 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 denne måde anbefales ikke og bør undgås, da brugere kan opnå dine lagerdata ved at tjekke kildekoden.
Tjek, når brugeren indsender
Tjek beløbet med maks. værdi på serversiden, hvilket fører til dårlig brugeroplevelse.
Asynkron datakontrol
Dette er for det meste anbefalet og brugt, som får data asynkront. Du kan prøve jquery
.
Forudsat at dit sprog på serversiden er php
, kan du lave 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
Så kan du tjekke beløbet ved at 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!");
});
});