2011-12-26 30 views
7

Tôi đã theo mẫu:nộp mẫu đơn sau khi xác nhận jquery

<form id="form" action="comments.php" method="post"> 
    <ul> 
    <li><div class="formbox_titles">Name</div><input type="text" name="name" class="required comm_input" /></li> 
    <li><div class="formbox_titles">Email</div><input type="text" name="email" class="required comm_input"/></li> 
    <li><div class="formbox_titles">Message</div><textarea name="message" class="required comm_text"></textarea></li> 
    <li><input type="submit" value="Submit"></li> 
    </ul> 
</form> 

và sau JQuery cho hình thức nộp hồ sơ:

target: '#preview', 
    success: function() { 
    $('#formbox').slideUp('fast'); 
} 

Bây giờ vấn đề là tôi cũng có hình thức xác nhận JQuery đang

$().ready(function() { 
    // validate comment form 
    $("#form").validate({ 
    }); 
}); 

Cả hai đều hoạt động tốt và biểu mẫu bật lên cảnh báo rằng tất cả ba trường không thể trống nhưng ngày bên trong biểu mẫu được gửi vào cơ sở dữ liệu. Im sử dụng mã sau đây để xác nhận mẫu http://bassistance.de/jquery-plugins/jquery-plugin-validation/ Vì vậy, câu hỏi là làm thế nào để thêm jquery đầu tiên bên trong thứ hai, vì vậy đầu tiên sẽ được thực hiện một khi các lĩnh vực yêu cầu được điền?

Hy vọng ai đó sẽ trợ giúp. Cảm ơn.

Trả lời

3

Tôi không biết bất cứ điều gì về plugin xác nhận của bạn, nhưng thường u có thể sử dụng hòa bình mã này

<script> 

    $("form").submit(function() { 
     if (validationIsTrue()) { 
     return true; 
     } 
     else { 
     return false; 
     } 
    }); 
</script> 

Bạn phải làm xác nhận của bạn và sau đó trở về đúng/sai đến nộp chức năng của biểu mẫu. Nếu các plugin không trả về một giá trị bool, bạn có thể thử một cái gì đó như thế này:

$("form").submit(function() { 
    return $(this).validate({ .... }); 
}); 
8

Từ ví dụ của bạn, tôi không rõ ràng về kiểm soát dòng chảy của trang của bạn, tuy nhiên, tôi giả sử bạn đang gọi phương thức submit() một vài nơi. Sau khi bạn đã xác thực biểu mẫu và trước khi bạn gửi biểu mẫu, hãy kiểm tra xem đó là xác thực với phương thức valid(). Mã của bạn sẽ trông giống như sau:

$("#form").validate(); 
if ($('#form').valid()) 
    $('#form').submit(); 
2

Khi bạn nói "ngày bên trong biểu mẫu được gửi" không có ý nghĩa với tôi vì trong đoạn mã, tôi không thấy gì gọi là "ngày".

Tôi đã sử dụng .validate() cắm rộng rãi ... Những gì tôi có thể nói với bạn rằng có thể giúp là validate cắm bạn đang sử dụng có một chức năng submitHandler mà bạn có thể sử dụng ...

// validate comment form 
$("#form").validate({ 
submitHandler : function(form) { 
    //do something here 
    form.submit(); 
} 
}); 

Trình gửi chỉ được gọi nếu tất cả các quy tắc xác thực được đáp ứng. Cụ thể trong trường hợp của bạn, bạn có ba trường với "bắt buộc" trên chúng có nghĩa là biểu mẫu này sẽ KHÔNG được gửi trừ khi tất cả ba trường có một giá trị.

Với điều đó, tôi có thể cho bạn biết chắc chắn rằng thông tin được cung cấp không có gì để cho biết vấn đề bạn đang mô tả. Cung cấp thông tin ngày càng tốt hơn sẽ giúp chúng tôi tìm ra điều gì sai.

9

Nếu bạn muốn gửi biểu mẫu theo cách thủ công, bạn phải bỏ qua sự kiện ràng buộc jQuery. Bạn có thể làm điều đó bằng một trong các cách sau:

$('#form_id')[0].submit(); 

hoặc

$('#form_id').get(0).submit(); 

[0] hoặc nhận (0) cung cấp cho bạn các đối tượng DOM thay vì đối tượng jQuery.

+1

Cảm ơn bạn đã chỉ ra rằng ...Đã tìm kiếm điều này vì tôi có một sự kiện bị ràng buộc để gửi biểu mẫu nhưng trước khi tôi gửi biểu mẫu tôi phải thực hiện yêu cầu AJAX và nếu điều kiện là đúng, tôi gửi biểu mẫu và tôi cần bỏ qua. +1 –

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