2010-08-04 27 views
6

Tôi đang gặp khó khăn khi nhận được plugin Xác thực jQuery để hoạt động như tôi muốn. Hãy trần với tôi kể từ khi tôi không có chuyên môn JQ :).valid() chỉ xác thực đầu vào đầu tiên với plugin jQuery Validation

Những gì tôi có một hình thức với một số nguyên liệu đầu vào cần thiết là, các quy tắc như cho thấy dưới đây:

$("#makeEvent").validate({ 
    onfocusout: false, 
    rules: { 
     name: { 
      required: true, 
      minLength: 2, 
      maxLength: 100 
     }, 
     host: { 
      required: true, 
      minLength: 2, 
      maxLength: 100 
     }, 
     startDate: { 
      required: true, 
      date: true 
     }, 
     endDate: { 
      required: true, 
      date: true 
     }, 
     desc: { 
      required: true, 
      minLength: 10, 
      maxLength: 255 
     }, 
     webpage: { 
      required: false, 
      url: true 
     }, 
     email: { 
      required: true, 
      email: true 
     }, 
    } 
}); 

Bây giờ tôi có một cuộc gọi tùy chỉnh .click() nơi tôi muốn xác thực biểu mẫu và sau đó hiển thị bản xem trước cho người dùng trước khi cho phép họ gửi biểu mẫu. Xin vui lòng xem chức năng dưới đây:

$('#submitPreview').click(function() { 
    if($("#makeEvent").valid() === false) { 
     //What to do if validation fails 
    } else if($("#makeEvent").valid() === true) { 
     //Show the preview and let the user either make changes or submit the final result 
    } 
}); 

Nhưng những gì xảy ra là chức năng chỉ xác nhận đầu vào đầu tiên (tên) và thậm chí xác nhận nó không đúng cách (các quy tắc yêu cầu tối thiểu 2 nhân vật, vẫn còn đó xác nhận với chỉ 1 ký tự được nhập. Nó chỉ trả về false nếu không có ký tự nào được thêm vào).

Có lẽ cách tiếp cận của tôi không phải là tốt nhất, vì vậy tôi luôn sẵn sàng cho bất kỳ đề xuất nào. Nếu bạn muốn xem mã nguồn lộn xộn, bạn có thể thấy hàm hoạt động tại đây: http://event.gusthlm.se/make.php

Cảm ơn!

Trả lời

19

Hai vấn đề tôi có thể thấy là bạn không sử dụng thuộc tính name trên các trường nhập và bạn đang sử dụng name làm một trong các ID (gây ra tất cả các loại đau buồn cho IE khi gửi biểu mẫu).

tôi sẽ đề nghị thêm tên thuộc tính đầu vào của bạn, chọn và textarea yếu tố và thay đổi "tên" để một cái gì đó như "thename":

<label for="thename">Börjar</label> 
<input type="text" name="thename" id="thename"/> 
+0

Đoán những gì? Điều này giải quyết được vấn đề. Tôi không bao giờ có thể đoán được ... Cảm ơn! –

+0

Tôi biết điều này là cũ nhưng tôi có một vấn đề mà tôi không thể có trường tên. Tôi đang sử dụng Stripe để xác thực thẻ tín dụng và giữ thông tin thẻ tín dụng khỏi việc nhấn máy chủ của chúng tôi, chúng tôi phải loại trừ thuộc tính tên. Tôi cũng tò mò tại sao thuộc tính name có bất kỳ mang về xác nhận phía khách hàng? – computrius

+0

@computrius, Vì plugin jQuery Validate yêu cầu thuộc tính 'name' ... đó là cách nhà phát triển đã quyết định plugin nên theo dõi các yếu tố đầu vào. – Sparky

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