2010-01-07 42 views
10

Tôi muốn nhấn phím enter để truy cập p2.htm hoặc p3.htm theo văn bản nhập văn bản mà tôi đã nhập. Và tôi cũng muốn nhấn nút submit1 để cảnh báo ('no1') theo cách thủ công.Làm cách nào để tắt tính năng tự động gửi khi nhấn phím enter?

Nó hoạt động trong FireFox, nhưng trong IE6, khi tôi nhấn phím enter, nó sẽ gửi nút gửi.

Làm cách nào để tôi thực hiện điều đúng trong IE 6 như trong FireFox?

Tôi sử dụng javascript và jQuery.

<input id="Text2" type="text" onkeyup="if(event.keyCode==13){go2();}" /> 
<input id="Text3" type="text" onkeyup="if(event.keyCode==13){go3();}" /> 

<input id="submit1" type="submit" value="submit" onclick="alert('no1')" /> 

<script type="text/javascript"> 
    function go2() 
    { 
     window.location = "p2.htm"; 
    } 
    function go3() 
    { 
     window.location = "p3.htm"; 
    } 
</script> 
+1

Tôi không thấy bất kỳ jQuery nào ở đây ... – Skilldrick

Trả lời

8

Chức năng này nên làm như lừa:

function submitOnEnter(e, page) { 
    var key; 

    if (window.event) 
     key = window.event.keyCode; //IE 
    else 
     key = e.which; //Firefox & others 

    if(key == 13) 
     window.location = page; 
} 

Bạn nên gọi nó là như thế này:

<input id="Text2" type="text" onkeyup="submitOnEnter(event, 'p2.html')" /> 
+0

Có một số sai lầm nhưng giải pháp của bạn giúp tôi. chức năng gửiMở (e, trang) { phím var; nếu (window.event) key = window.event.keyCode; // IE else khóa = e.which; // Firefox & những người khác nếu (key == 13) { window.location = page; trả về false; // ngăn chặn nút tự động nhấn gửi } } – Mike108

+0

Cảm ơn bạn rất nhiều. – Mike108

+0

Vâng, bạn nói đúng Tôi đã quên sự trở lại. – Jojo

5

Thay đổi kiểu đầu vào từ "submit" để "nút"

+1

Đừng làm cho nó phá vỡ hoàn toàn khi JS không khả dụng. Xây dựng trên những thứ hoạt động. http://icant.co.uk/articles/pragmatic-progressive-enhancement/ – Quentin

+0

Để công bằng, OP bị khóa vào một giải pháp JS. –

23
<form onsubmit="return false"></form> 

Điều này sẽ dừng biểu mẫu pr chuyển sang trang tiếp theo sau khi nhấp vào nút gửi hoặc nhấn enter.

+0

3 năm sau và vẫn tiết kiệm trong ngày. Không đơn giản hơn thế này. –

+3

Điều gì sẽ xảy ra nếu tôi chỉ muốn vô hiệu hóa việc gửi trên khóa nhập, nhưng tôi muốn giữ lại lần gửi khi nhấp ?? – sumid

+0

@sumid, [câu trả lời của tôi dưới đây] (http://stackoverflow.com/a/6778590/590719) có trợ giúp trong trường hợp đó không? – WEFX

2
<%@taglib uri="/struts-tags" prefix="s" %> 
<html> 
<head> 
    <script type="text/javascript"> 
     function stopsubmit() 
     { 
      document.ourform.onsubmit="return true"; 
     } 
     function pup() 
     { 
      return true; 
     } 
    </script> 
</head> 
<body> 
    <form action="sa.jsp" name="ourform" onsubmit="return false"> 
     <s:submit action="" onclick="stopsubmit()" theme="simple"></s:submit> 
    </form> 
</body> 

21

Nếu sử dụng MVC3, bạn có thể vô hiệu hóa trình qua Nhập bằng cách chỉnh sửa cuộc gọi BeginForm như sau:

@using (Html.BeginForm("SomeAction", "SomeController", FormMethod.Post, new { onkeydown = "return event.keyCode!=13" })) 
{ 
    ... 
} 
+1

Cách tiếp cận đơn giản nhất ở đây và hoạt động như một sự quyến rũ! –

+0

Điều này sẽ vô hiệu hóa phím enter trên textarea bên trong biểu mẫu. – Santosh

5

Vấn đề với giải pháp chấp nhận là bình thường nộp nút không còn làm việc . Bạn phải viết tất cả các nút.

<form onsubmit="return false"></form> 

Đây là giải pháp tốt hơn không phá vỡ các nút gửi không javascript. Giải pháp này chỉ yêu cầu trình duyệt không thực hiện hành vi mặc định khi người dùng nhấn phím enter trên đầu vào biểu mẫu.

// prevent forms from auto submitting on all inputs 
$(document).on("keydown", "input", function(e) { 
    if (e.which==13) e.preventDefault(); 
}); 
Các vấn đề liên quan