Các hộp kiểm thường đại diện cho dữ liệu nhị phân được lưu trữ trong cơ sở dữ liệu dưới dạng các giá trị Có / Không, Y / N hoặc 1/0. Các hộp kiểm HTML có bản chất xấu chỉ gửi giá trị đến máy chủ nếu hộp kiểm được chọn! Điều đó có nghĩa là tập lệnh máy chủ trên trang web khác phải biết trước tất cả các hộp kiểm có thể có trên trang web để có thể lưu trữ các giá trị dương (đã chọn) hoặc âm (không được kiểm tra). Trên thực tế chỉ có các giá trị âm là có vấn đề (khi người dùng bỏ chọn giá trị đã kiểm tra trước (trước) - làm thế nào máy chủ có thể biết điều này khi không có gì được gửi nếu không biết trước rằng tên này sẽ được gửi). Nếu bạn có tập lệnh phía máy chủ tự động tạo tập lệnh CẬP NHẬT thì có một vấn đề vì bạn không biết tất cả các hộp kiểm sẽ được nhận để đặt giá trị Y cho giá trị đã chọn và giá trị N cho các tập tin không được chọn (không nhận được).
Vì tôi lưu trữ các giá trị 'Y' và 'N' trong cơ sở dữ liệu của mình và thể hiện chúng thông qua các hộp kiểm được chọn và không được kiểm tra trên trang, tôi đã thêm trường ẩn cho mỗi giá trị (hộp kiểm) với các giá trị 'Y' và 'N' sau đó sử dụng các hộp kiểm chỉ để trực quan biểu diễn và sử dụng hàm JavaScript đơn giản kiểm tra () để đặt giá trị nếu theo lựa chọn.
<input type="hidden" id="N1" name="N1" value="Y" />
<input type="checkbox"<?php if($N1==='Y') echo ' checked="checked"'; ?> onclick="check(this);" />
<label for="N1">Checkbox #1</label>
sử dụng một trình nghe onclick JavaScript và kiểm tra chức năng gọi () cho mỗi hộp kiểm trên trang web của tôi:
function check(me)
{
if(me.checked)
{
me.previousSibling.previousSibling.value='Y';
}
else
{
me.previousSibling.previousSibling.value='N';
}
}
Bằng cách này, các giá trị 'Y' hoặc 'N' luôn được gửi đến tập lệnh phía máy chủ, nó biết các trường nào cần được cập nhật và không cần chuyển đổi giá trị checbox "on" thành 'Y' hoặc không nhận được hộp kiểm thành 'N' '.
LƯU Ý: khoảng trắng hoặc dòng mới cũng là anh chị em nên ở đây tôi cần .preinglySibling.preinglySibling.value. Nếu không có khoảng cách giữa thì chỉ có .preinglySibling.value
Bạn không cần phải thêm rõ ràng trình nghe onclick như trước đây, bạn có thể sử dụng thư viện jQuery để tự động thêm trình nghe nhấp chuột với chức năng để thay đổi giá trị cho tất cả các hộp kiểm trong trang của bạn:
$('input[type=checkbox]').click(function()
{
if(this.checked)
{
$(this).prev().val('Y');
}
else
{
$(this).prev().val('N');
}
});