Tôi đang làm việc với một số mã cũ. Nó sử dụng xác thực biểu mẫu ColdFusion được tích hợp sẵn (ví dụ: _required
các trường ẩn). Tôi muốn thêm nút hủy vào biểu mẫu. Nút hủy có thực sự xử lý một số logic nghiệp vụ (vì vậy tôi không thể chỉ làm cho nó đặt location.href sang một số trang khác). Vấn đề là, bởi vì nút hủy là nút gửi, nó kích hoạt tính năng xác thực được tích hợp sẵn và người dùng nhận được lỗi là trường được yêu cầu.Bất kỳ cách nào để tắt tính năng xác thực biểu mẫu được tích hợp sẵn của ColdFusion?
Có cách nào để vô hiệu xác thực cho nút gửi cụ thể đó không? Tôi không muốn sửa đổi mã cơ bản mà xây dựng biểu mẫu, vì nó được sử dụng trong một loạt các địa điểm. Đây là một phiên bản đơn giản hóa của mã của tôi:
<cfif IsDefined("Form.OK")>
You clicked OK!
<cfelseif IsDefined("Form.Cancel")>
You clicked Cancel!
</cfif>
<cfoutput>
<form action="#CGI.Path_Info#" method="POST">
Enter Name: <input type="text" name="Name" value="" /><br/>
<input type="hidden" name="Name_required" value="" />
<input type="submit" name="OK" value="OK" />
<input type="submit" name="Cancel" value="Cancel" />
</form>
</cfoutput>
Một điều mà tôi nghĩ là làm cho onclick của nút Cancel loại bỏ bất kỳ trường "_required" bị ẩn khỏi DOM. Điều này làm việc, nhưng nó cảm thấy rất hacky. Đây là Javascript tôi đã sử dụng cách tiếp cận cho rằng:
<script type="text/javascript">
function removeRequiredFields() {
var els = document.getElementsByTagName('input');
for(var i = 0; i <= els.length; i++) {
if(els[i].type == 'hidden' && els[i].name.endsWith('_required'))
els[i].parentNode.removeChild(els[i]);
}
}
</script>
(btw, workaround của bạn cũng có thể muốn kiểm tra 'textarea' và' select' thẻ?) –
Cuối cùng, tốt nhất (và dễ nhất) giải pháp có thể được thực sự thay đổi mã tạo ra các hình thức. Trong khi các giải pháp JS để loại bỏ các lĩnh vực có thể làm việc, nó có vẻ 'hacky'. Làm thế nào bạn sẽ xử lý có JS được thực hiện? Điều đó sẽ không cần phải được thêm vào mã tạo biểu mẫu không? –
Liệu Huỷ có thực sự cần gửi biểu mẫu không? Điều gì sẽ xảy ra nếu bạn thay đổi nút Hủy từ kiểu 'submit' thành kiểu' nút' và xử lý nó là xử lý thông qua sự kiện onclick? –