2010-03-30 32 views
12

Tôi hoàn toàn bối rối ... Tôi xin thề là hôm nay tôi đã làm việc ... Tôi thức dậy sáng nay và tất cả các mẫu đơn của tôi đều dừng lại để làm việc trong dự án của tôi.onSubmit return false không hoạt động

Tất cả các biểu mẫu đều có "yêu cầu" đối với hàm trả về false vì đây là cuộc gọi ajax, do đó biểu mẫu không bao giờ được gửi.

Sau rất nhiều bài kiểm tra, tôi đơn giản hóa các câu hỏi để đoạn mã này:

<html> 
<head> 
<script type="text/javascript"> 
function sub() 
{ 
    alert ("MIC!"); 
    return false; 
} 
</script> 
</head> 
<body> 

<form method = "post" id = "form1" onsubmit = "return sub()"> 
input: <input type="text" name="input1" > 
    <a href="#" onClick="document.getElementById('form1').submit();">button</a> 
</form> 

</body> 
</html> 

tôi sẽ thề rằng đây hoạt động hoàn hảo, nhưng hôm nay là cũng không làm việc: D

Tại sao nếu tôi nhấn nút biểu mẫu được gửi?

Tôi biết đó là câu hỏi hoàn toàn mới của người mới, nhưng tôi bị kẹt

Cảm ơn bạn!

Trả lời

2

Cố gắng thay đổi bạn "nút" mã như thế

<a href="#" onClick="return document.getElementById('form1').onsubmit();">button</a> 
5

Sự kiện onsubmit chỉ cháy để gửi biểu mẫu bình thường. Nó không kích hoạt khi phương thức JavaScript submit() được gọi.

Giải pháp tốt nhất là sử dụng nút gửi thông thường tại đây.

Nếu bạn muốn tiếp tục sử dụng liên kết ở đầu trang (không phải là unobtrusive, progressive hoặc duyên dáng) thì bạn cần gọi hàm sub() một cách rõ ràng và kiểm tra giá trị trả về trước khi quyết định xem bạn có nên hãy gọi submit() hay không.

12

Trình duyệt không gọi sự kiện onSubmit trên biểu mẫu nếu bạn gọi submit() theo chương trình.

+0

Andy ... Tôi thề bạn đã làm việc hôm qua :) Tôi có toàn bộ dự án với các loại cấu trúc đó, và biểu mẫu chưa bao giờ được gửi ... Nó phải là thứ khác ...: P – StuckOnSubmit

+0

Sự kiện gửi sẽ không kích hoạt với mã này. BA câu trả lời riêng biệt tất cả nói rằng! Hoặc bạn là sai, hoặc trường hợp thử nghiệm của bạn không đủ đại diện cho mã thực tế của bạn. – Quentin

+0

Bạn có chắc chắn bạn không có nút gửi thực tế không? Khi đó sẽ làm việc. Có lẽ bạn đã thay đổi các nút gửi cho neo như một nâng cao ngày hôm qua? Bạn có hệ thống kiểm soát nguồn không? Các nhà phát triển khác cũng đang làm việc trên dự án có thể thay đổi nó? –

5

Dường như chức năng 'submit()' bỏ qua sự kiện 'biểu mẫu' thẻ 'trợ giúp' trong Firefox và IE8. Nếu bạn sử dụng một nút gửi, sau đó nó hoạt động như mong đợi:

<html> 
<head> 
<script type="text/javascript"> 
function sub() 
{ 
    alert ("MIC!"); 
    return false; 
} 
</script> 
</head> 
<body> 

<form method = "post" action="http://google.com" id = "form1" onsubmit = "return sub();"> 
input: <input type="text" name="input1" > 
    <input type="submit"> 
</form> 

</body> 
</html> 
3

Bạn có thể sử dụng phương pháp jquery preventDefault.

$(function() { 
     $('#repForm').bind('submit', function (e) { 
      var isValid = true; 
      if (btnname == 'test') { 
       isValid = ValidateEmailID(); 
      } 
      else { 
       isValid = ValidateSomething(); 
      } 

      if (!isValid) { 
       e.preventDefault(); 
      } 
     }); 
    }); 
0

Tôi nghi ngờ anh ấy muốn sử dụng nút biểu mẫu không thuộc loại gửi. Trong trường hợp này, bạn cũng có thể sử dụng:

<input type="button" value="Submit" onclick="if(sub()) document.getElementById('form1').submit()"> 

Một mẹo tôi đưa ra là sử dụng thuộc tính name dưới mọi hình thức, vì nó là dễ dàng hơn để sử dụng: document.form1.submit() thay vì document.getElementById('form1').submit(). Nó là crossbrowser và làm việc trong tất cả chúng. getElementById là rất tốt nhưng không cần thiết cho các biểu mẫu.

-3

Kiểm tra cú pháp cơ bản và cấu trúc ... rồi Kiểm tra các biểu mẫu khác trên trang của bạn hoặc hộp nhập không có biểu mẫu ... Tôi đã gặp sự cố tương tự (hoặc tương tự: nhấn enter trong hộp nhập liệu sẽ khiến biểu mẫu gửi) ...

Tôi sao chép đã dán các mẫu ở trên và tải trang. Họ làm việc và tôi đã không, vì vậy tôi tinh chỉnh định dạng và thậm chí viết lại nó.đang

+0

Bạn đã thực hiện những thay đổi nào để nó hoạt động? Hãy xem [cách trả lời] (http://stackoverflow.com/questions/how-to-answer), để hiểu cách trả lời các câu hỏi trên Stack Overflow. – Jesse

-1

Tôi đã có cùng một vấn đề (Tôi đã sử dụng IE 8),

Sau đây là KHÔNG làm việc:

<form method="post" id="form1" onsubmit="sub"> 
<form method="post" id="form1" onsubmit="sub()"> 
<form method="post" id="form1" onsubmit="return sub()"> 

và sau đang LÀM VIỆC,

<form method="post" id="form1" onsubmit="return(sub())"> 

tôi chỉ cần làm theo mẫu here

Và xin lưu ý rằng:

Phương thức gửi không gọi trình xử lý sự kiện onsubmit.

Gửi biểu mẫu bằng cách sử dụng INPUT TYPE = submit, INPUT TYPE = image hoặc LOẠI BUTTON = đối tượng gửi.

0

Thêm "trả lại" trong tất cả các câu lệnh tiện ích của bạn trong thẻ biểu mẫu ... ví dụ: onsubmit = "return validate_function()" theo cách này trả về false hoặc trả về true trong hàm validate của bạn được đăng là kết quả của lệnh return trong tiện ích của bạn.

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