Hay 3 formas de resolverlo:
- Transferir información máxima al front-end
- Comprobar cuándo envía el usuario
- Comprobación de datos asincrónicos, como
Jquery
ajax
Transferir información máxima al front-end
Simplemente coloque su información máxima en un área oculta y use javascript para obtener y verificar eso.
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);"/>
Pero de esta manera no se recomienda y debe evitarse, ya que los usuarios pueden obtener sus datos de almacenamiento comprobando el código fuente.
Comprobar cuando el usuario envía
Verifique la cantidad con el valor máximo en el lado del servidor, lo que genera una experiencia de usuario deficiente.
Comprobación de datos asíncronos
Esto se recomienda y utiliza principalmente, que obtiene datos de forma asíncrona. Puedes probar jquery
.
Asumiendo que su idioma del lado del servidor es php
, puede crear un archivo 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
Luego puede verificar la cantidad con 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!");
});
});