Er zijn 3 manieren om het op te lossen:
- Maximum info overzetten naar front-end
- Controleer wanneer gebruiker indient
- Asynchrone gegevenscontrole, zoals
Jquery
ajax
Maximum info overzetten naar front-end
Plaats gewoon je maximale informatie in een verborgen gebied en gebruik javascript om dat te krijgen en te controleren.
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);"/>
Maar deze manier is niet aanbevolen en moet worden vermeden, aangezien gebruikers uw opslaggegevens kunnen verkrijgen door de broncode te controleren.
Controleer wanneer gebruiker indient
Controleer het bedrag met de maximale waarde aan de serverzijde, wat leidt tot een slechte gebruikerservaring.
Asynchrone gegevenscontrole
Dit wordt meestal aanbevolen en gebruikt, waarmee gegevens asynchroon worden opgehaald. Je kunt jquery
proberen .
Ervan uitgaande dat uw server-side lang php
. is , kunt u een bestand maken 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
Dan kunt u het bedrag controleren met 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!");
});
});