2012-03-13 29 views
6

Tôi đang sử dụng tập lệnh sau để gửi biểu mẫu với jQuery, tuy nhiên Firefox đã tạo báo cáo lỗi sự cố, vui lòng cho tôi biết tôi đang làm gì sai.Firefox Form gửi vấn đề với jQuery

function teamValidation(){ 
    var cat_id = $('#cat_id').val();  

    if(cat_id == "0"){ 
     alert("Category is invalid...");  
     return false; 
    }else{ 
     $('#addForm').submit(); 
     return false; 
    } 
} 

<form action="<?php echo SITE_URL; ?>adminteams/saveDetail/" 
name="addForm" id="addForm" onsubmit="return teamValidation();"> 
<input type="hidden" name="cat_id" id="cat_id" value="1"/> 
</form> 

Firefox lỗi báo cáo

enter image description here

Nó đang làm việc tốt trong các trình duyệt khác.

Trả lời

5

Vấn đề là biểu mẫu của bạn đang gửi nhiều lần.Bạn có thể đạt được mục tiêu của bạn sử dụng bất kỳ trong các cách sau:
HTML:

<form action="<?php echo SITE_URL; ?>adminteams/saveDetail/" name="addForm" id="addForm"> 
<input type="hidden" name="cat_id" id="cat_id" value="1"/> 
</form> 

JAVASCRIPT:

$('#addForm').submit(function(){ 
    var cat_id = $('#cat_id').val();  

    if(cat_id == "0"){ 
     alert("Category is invalid...");  
     return false; 
    }else{ 
     return true; 
    } 
}); 

Another Way:
HTML:

<form action="<?php echo SITE_URL; ?>adminteams/saveDetail/" name="addForm" id="addForm" onsubmit="return teamValidation();"> 
    <input type="hidden" name="cat_id" id="cat_id" value="1"/> 
    </form> 

JAVASCRIPT :

function teamValidation(){ 
    var cat_id = $('#cat_id').val();  

    if(cat_id == "0"){ 
     alert("Category is invalid...");  
     return false; 
    }else{ 
     return true; 
    } 
} 
0

Bạn quên đóng định nghĩa chức năng của bạn

function teamValidation(){ 
    var cat_id = $('#cat_id').val();  

    if(cat_id == "0"){ 
     alert("Category is invalid...");  
     return false; 
    }else{ 
     $('#addForm').submit(); 
     return false; 
    } 
} <--- this 
+0

Đây không phải là một vấn đề –

+0

Đây không phải là một vấn đề của} i chỉ cần quên đi điều này khi tôi đặt câu hỏi này trong stackoverflow –

0

Bạn bỏ lỡ một '}' ở cuối. Tuy nhiên, nó không nên gây ra một vụ tai nạn. 99% sự cố với Cài đặt Firefox của bạn. Tôi chỉ cần kiểm tra với tôi ở đây. Hoạt động chính xác. Không có vấn đề với mã của bạn. Thử Gỡ cài đặt và cài đặt lại Firefox.

Phát hiện khác. Biểu mẫu của bạn đang được gửi vô thời hạn. Có thể các trình duyệt khác của bạn mới hơn và Firefox của bạn đã lỗi thời (không có khả năng xử lý các cuộc truy tìm vô hạn, đó là lý do tại sao nó có thể bị lỗi).

Anyways, hãy thử thay thế như sau:

$('#addForm').submit(); 

với:

document.getElementById("addForm").submit(); 

Hy vọng rằng sẽ giúp ..

Hòa bình được khi bạn ...

+0

R u chắc chắn người đàn ông này là vấn đề cài đặt .... –

+0

Đây không phải là một vấn đề của} tôi chỉ cần quên điều này khi tôi đặt câu hỏi này trong stackoverflow –

+0

Trình duyệt được thiết kế để đối phó với lỗi javascript. Trình duyệt ngừng thực thi Javascript nếu tìm thấy lỗi. Crashing do lỗi Javascript không phải là một điều của ngày hôm nay. Xin lỗi để nói nhưng có chắc chắn là một vấn đề với cài đặt của bạn. –

2

Bạn có một vòng lặp vô hạn gửi, sau đó ngăn chặn việc gửi, biểu mẫu của bạn khi giá trị củaHộp văn bảnkhông phải là 0. Xóa khối else, vì nó không phục vụ mục đích thực sự.

Để đi vào chi tiết hơn:

function teamValidation(){ 
    var cat_id = $('#cat_id').val();  

    if(cat_id == "0"){ 
     alert("Category is invalid...");  
     return false; 
    }else{ 
     $('#addForm').submit(); // this submits the form again - does NOT proceed with this submission of the form 
     return false; // returning false will prevent the submission from being completed 
    } 
} 

<form action="<?php echo SITE_URL; ?>adminteams/saveDetail/" 
name="addForm" id="addForm" onsubmit="return teamValidation();"> 
<input type="hidden" name="cat_id" id="cat_id" value="1"/> 
</form> 

Khi bạn gửi biểu mẫu, teamValidation() được gọi. Nếu xác thực được thông qua (mã khối else được thực hiện), bạn hãy gửi lại biểu mẫu làm cho teamValidation() được gọi lại, sau đó return false sẽ ngăn việc gửi này hiện tại hoàn tất. Firefox có khả năng bị lỗi vì nó tự tìm thấy trong một vòng lặp mà nó liên tục gửi một biểu mẫu, mà không bao giờ được phép hoàn thành; thực tế là trình duyệt khá khủng khiếp về việc sử dụng bộ nhớ có lẽ cũng không giúp được gì.

+0

Không có vòng lặp vô hạn nào được gửi trong mã của tôi –

+1

@Samad Có, có. Bạn gọi 'teamValidation()' khi bạn gửi biểu mẫu. Trong khối khác, bạn làm '$ ('# addForm'). Submit()' mà ** đệ trình biểu mẫu một lần nữa **, sau đó 'return false' mà ** ngăn cản việc gửi hoàn thành **. –

+0

i m sử dụng tập lệnh này để xác thực khác –