2012-02-04 35 views
5

Tôi đã tạo trường tìm kiếm (id: searchField) và nút tìm kiếm (id: searchButton) bằng cách sử dụng Điều khiển tùy chỉnh của Xpages. Tôi đã thêm một sự kiện onkeypress vào trường tìm kiếm sao cho nó sẽ kích hoạt một cú nhấp chuột vào nút tìm kiếm. SearchButton sau đó sẽ tải lại trang nhưng với các tham số url đến từ trường tìm kiếm. Vấn đề là trang tải lại nhưng các tham số tìm kiếm không được thêm vào URL khi tôi nhấn ENTER trong trường tìm kiếm, nhưng hoạt động bình thường khi tôi nhấn nút tìm kiếm. Dưới đây là các mã tôi đã sử dụng:XPages - sự kiện onkeypress không kích hoạt bấm đúng

(đang bổ sung vào onkeypress của searchField)

 
if (typeof thisEvent == 'undefined' && window.event) { thisEvent = window.event; } 
if (thisEvent.keyCode == 13) 
{ 
    document.getElementById("#{id:searchButton}").click(); 
} 

(đang bổ sung vào onclick của Album ảnh)

 
window.location.href = "test.xsp?search=" + document.getElementById("#{id:searchField}").value; 

Tôi đã thử nghiệm nó trong IE và Firefox, cả hai đều có vấn đề. Tôi đã tạo một tệp HTML mẫu và nó hoạt động chính xác. Đây có phải là một lỗi của XPages hoặc tôi thiếu một cái gì đó ở đây?

Trả lời

7

Thêm này sau khi bạn '.click()':

 thisEvent.preventDefault(); 
     thisEvent.stopPropagation(); 

Cần giải quyết vấn đề ;-)

+0

Vâng, điều này là chính xác - vấn đề nằm trong phím enter đang thực sự xảy ra để gửi biểu mẫu tới máy chủ - chuyển hướng trang không thể xảy ra tại thời điểm đó. –

0

Tôi đã làm điều này chỉ gần đây trong một XPage, và kịch bản sau đây làm việc cho tôi qua trình duyệt:

var e = arguments[0] || window.event; 
if (e.keyCode==13 || e.which==13) { 
    window.location.href = 'searchResults.xsp?query=' + 
     encodeURI(dojo.byId('#{id:searchInput}').value)); 
    return false; 
} 

Hope this helps,

Jeremy

+0

Cảm ơn câu trả lời. Nhưng tôi nghĩ rằng câu hỏi của tôi là về sự kiện onkeypress kích hoạt nút bấm, nhưng không làm việc tải lại (với các tham số URL) một cách chính xác. – Jairo

+0

Ok, Im vẫn không chắc chắn sau đó những gì bạn đang yêu cầu - nó không kích hoạt kịch bản, hay không tải lại trang? –

+0

thực sự điều kỳ lạ là nó kích hoạt nhấp chuột vào nút, nhưng sự kiện trên nút không được thực thi (reloadin/redirecting). Sự kiện chuyển hướng chỉ hoạt động khi nút được nhấp theo cách thủ công.:( – Jairo

6

Thay đổi sự kiện OnKeyPress của trường nhập để

if (typeof thisEvent == 'undefined' && window.event) { thisEvent = window.event; } 
if (thisEvent.keyCode == dojo.keys.ENTER) 
{ 
    dojo.byId("#{id:searchButton}").click(); 
    thisEvent.preventDefault(); 
} 

nên là đủ để giải quyết vấn đề. Lưu ý rằng để tương thích trình duyệt chéo Tôi đã sử dụng

dojo.keys.ENTER 

dojo.byId("id"); 

tài sản/phương pháp. Các dojo.keys đối tượng có rất nhiều thuộc tính để kiểm tra đối với một số phím bấm: xem here

Đánh dấu

0

Issue là có với id, được tạo ra bởi xpage. Tôi đã có một vấn đề tương tự. xPages tiền tố id của điều khiển tùy chỉnh như chế độ xem: _id1: _id ... Hãy thử tạo id hoàn chỉnh

Các vấn đề liên quan