Có 3 cách để giải quyết nó:
- Chuyển thông tin tối đa sang giao diện người dùng
- Kiểm tra khi người dùng gửi
- Kiểm tra dữ liệu không đồng bộ, như
Jquery
ajax
Chuyển thông tin tối đa sang giao diện người dùng
Chỉ cần đặt thông tin tối đa của bạn vào một số khu vực ẩn và sử dụng javascript để lấy và kiểm tra điều đó.
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);"/>
Nhưng cách này không được khuyến khích và nên tránh, vì người dùng có thể lấy được dữ liệu lưu trữ của bạn bằng cách kiểm tra mã nguồn.
Kiểm tra khi người dùng gửi
Kiểm tra số tiền với giá trị tối đa ở phía máy chủ, điều này dẫn đến trải nghiệm người dùng kém.
Kiểm tra dữ liệu không đồng bộ
Điều này chủ yếu được đề xuất và sử dụng, lấy dữ liệu không đồng bộ. Bạn có thể thử jquery
.
Giả sử ngôn ngữ phía máy chủ của bạn là php
, bạn có thể tạo một tệp 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
Sau đó, bạn có thể kiểm tra số tiền bằng 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!");
});
});