2012-04-23 27 views
5

Theo tài liệu hướng dẫn (knockoutjs.com/documentation/submit-binding.html) các ràng buộc gửi của knockoutjs có lợi thế là nó nắm bắt các cách khác để gửi biểu mẫu, chẳng hạn như nhấn phím enter khi nhập vào một hộp văn bản. Tôi có một lưới trên biểu mẫu của tôi và một số người dùng đang cố gắng sử dụng phím enter để chuyển từ trường này sang trường khác. Có cách nào để tránh gửi biểu mẫu khi điều này xảy ra không?Có cách nào để tránh rằng việc gửi liên kết của knockoutjs gửi biểu mẫu khi nhấn phím enter?

Trả lời

8

Một lựa chọn là thêm một trình xử lý keypress trên biểu mẫu cũng hấp thụ phím enter. Nó sẽ giống như sau:

<form data-bind="event: { keypress: absorbEnter }, submit: test"> 
    <div data-bind="absorbEnter: true"> 
    <input data-bind="value: name"> 
    <input type="submit" value="Go" /> 
    </div> 
</form> 

js:

var viewModel = { 
    name: ko.observable("test"), 
    absorbEnter: function(data, event) { 
     return event.keyCode !== 13; 
    }, 
    test: function() { 
     console.log("submitting", arguments);   
    } 
}; 
ko.applyBindings(viewModel); 

mẫu ở đây: http://jsfiddle.net/rniemeyer/FvZXj/2/

+0

Có Ryan, mà hoàn toàn làm việc !! Cảm ơn bạn. – jgarza

+0

Thậm chí có thể thêm nó vào một bindHandler để đưa nó ra khỏi mô hình xem của bạn như: http://jsfiddle.net/rniemeyer/FvZXj/3/ –

+0

KO có thể phân biệt giữa khóa và khóa không? – FutuToad

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