Tôi có thể đặt dữ liệu với các trường tìm kiếm. Tôi muốn một phương thức trên bean sao lưu được gọi khi phím ENTER được nhấn, cũng như DataTable được trả lại.JSF gọi phương thức sao lưu bean và các thành phần reRender trên phím ENTER
Cách tiếp cận của tôi cho đến nay chỉ hoạt động trong IE 6 và 7, không hoạt động trong FF. Đây là inputText:
<h:inputText
value="#{applicantProductListBean.applicantNameFilterValue}"
id="applicantNameFilterValue" onkeypress="submitByEnter(event)">
</h:inputText>
và đây là phương pháp Javascript Tôi gọi:
function submitByEnter(e){
if(e.keyCode==13){
// alert("Enter was pressed");
e.returnValue=false;
e.cancel=true;
document.getElementById("applicantProductListForm:refreshButton").click();
}
}
Như bạn có thể thấy, phương pháp Javascript nhấp chuột vào nút refresh, mà tồn tại trên trang:
<a4j:commandButton value="Refresh" id="refreshButton"
action="#{applicantProductListBean.refreshData}"
image="/images/icons/refresh48x48.gif"
reRender="table, scroller">
</a4j:commandButton>
Phương thức làm mớiData không trả lại bất kỳ điều gì. Như đã nói trước đây, điều này chỉ hoạt động trong IE 6 và IE 7.
Có ai biết tại sao nó không hoạt động trong FF không?
Cách thay thế mà tôi đang xem xét là HotKey, thực sự có thể bắt sự kiện ENTER, nhưng nó chỉ có thể gọi Javascript, vì vậy nó không thích hợp.
Cách thích hợp để thực hiện điều này thông qua RichFaces hoặc JSF thuần túy?
Chúc mừng!
UPDATE:
Hơi sửa đổi câu trả lời bằng cách BalusC, kịch bản mà làm việc là:
if (event.preventDefault) {
// Firefox
event.preventDefault();
} else {
// IE
event.returnValue = false;
}
Người đầu tiên làm việc. Cảm ơn người đàn ông! –
Bạn được chào đón. Tuy nhiên, nó sẽ không hoạt động trên (rất) các trình duyệt cũ. Kiểm tra nó trong tất cả các trình duyệt bạn đang hỗ trợ. – BalusC
Tôi đã thực hiện cập nhật (tôi kiểm tra xem ngăn chặnDefault tồn tại và gọi nó hoặc đặt returnValue thành false). Tôi đã thử nghiệm nó trong IE6, IE7, FF. –