2010-08-12 25 views
18

Tôi có một hộp văn bản và nhiều nút. Khi người dùng ở trong một số hộp văn bản và nhấn phím "enter" thì sự kiện nhấn nút cụ thể được nâng lên. Tôi đọc trên internet rằng có một số vấn đề với "nhập" chìa khóa và tôi đã thử vài giải pháp nhưng nó vẫn luôn luôn đi vào sự kiện nút đó (nút đó là nút đầu tiên trong trang).nhập khóa vào nút bắn sai asp.net

tôi đã cố gắng tạo ra một nút mà không làm gì và viết những dòng này trong Page_Load:

idTextBoxFA.Attributes.Add("onkeydown","if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementBtId('" + noEnterButton.UniqueID + "').click();return false;}} else {return true}; "); 

Tất cả các điều khiển trang của tôi đang ở trong một hình thức và tôi đã cố gắng đưa ra các hình thức "defaultButton" tài sản để nút mà tôi tạo ra. Điều đó cũng không hiệu quả.

Bất kỳ ý tưởng nào tại sao tính năng này không hoạt động và tôi đang làm gì sai?

+0

có thể trùng lặp của [làm thế nào để thiết lập một mặc định 'nhập' vào một nút nào đó] (http://stackoverflow.com/questions/7638119/làm thế nào để thiết lập-một-mặc định-enter-on-a-nhất định-nút) –

+0

Mine là trước đó;) –

+0

Hai câu hỏi rất giống nhau mà tôi đã không chắc chắn mà một trong những lá cờ. Xu hướng của StackOverflow là chọn câu hỏi được định dạng rõ ràng hơn, chứ không phải câu hỏi được đăng đầu tiên. Tuy nhiên, trong trường hợp này, ngay cả cách phân giải cũng tương tự nhau, vì vậy tôi đã đi với câu hỏi phổ biến hơn và câu hỏi có nhiều phiếu bầu hơn. Lấy làm tiếc. –

Trả lời

36

Cách tiêu chuẩn trong ASP.NET để kiểm soát nút gửi được kích hoạt khi ENTER được nhấn là để bọc các điều khiển và nút trong một asp: Panel với thuộc tính DefaultButton được đặt thành nút đúng.

Nếu tôi đọc câu hỏi của bạn đúng cách, bạn chỉ muốn một nút cụ thể được kích hoạt khi ENTER được nhấn, vì vậy hãy bọc mọi thứ trên trang của bạn trong một bảng điều khiển duy nhất: Bảng điều khiển.

<asp:Panel id="pnlDefaultButton" runat="server" DefaultButton="btnOK"> 
    <!-- All controls here including: --> 
    <asp:Button id="btnOK" runat="server" Text="OK" /> 
</asp:Panel> 
+0

cảm ơn, tôi thấy điều này thực sự hữu ích :) – iamserious

+0

Điều gì về asp: Nội dung? Tôi sử dụng trang chính và không có bảng điều khiển cũng như biểu mẫu trên trang của tôi. – Marcel

+0

@Marcel - Tôi không chắc chắn ý bạn là gì. Sử dụng trang chính không thay đổi nhiều, trừ khi nút nằm trong một phần nội dung và các phần khác của trang ở một nơi khác. Trong tình huống đó, bạn có thể sắp xếp lại nội dung của mình hoặc xem xét một giải pháp JavaScript thuần túy. –

7

Không cần bảng điều khiển. Chỉ cần sử dụng như sau:

UseSubmitBehavior="false" 
0

Vui lòng sử dụng

idTextBoxFA.Attributes.Add("onkeypress", "javascript:var evnt = window.event"; 
if(evnt.keyCode==13) 
{ 
document.getElementById('" + noEnterButton.ClientID + "').click(); 
} 
else{};"); 
Các vấn đề liên quan