2013-06-15 26 views
8

Với jQueryValidate, tôi đang cố gắng tạo một trường bắt buộc chỉ khi một trường cụ thể khác trống. Vì vậy, sau khi tìm kiếm trên Internet, tôi đã làm điều này:jQueryValidate - Trường bắt buộc - phụ thuộc không hoạt động

rules: { 
    marque: { 
      required: { 
       depends: function() { 
        if (($('#add_marque').val() == "Ajouter une marque" && $('#marque').val() == -1) || ($('#add_marque').val() == "" && $('#marque').val() == -1)) { 
         return true; 
        } 
        else { 
         return false; 
        } 
       } 
      } 
    } 
} 

Thật không may, nó không hoạt động. Nhưng, nếu tôi làm điều này:

depends: function() { 
    if (($('#add_marque').val() == "Ajouter une marque" && $('#marque').val() == -1) || ($('#add_marque').val() == "" && $('#marque').val() == -1)) { 
      alert("Here!"); 
      return true; 
     } 
     else { 
      return false; 
     } 
} 

Hộp cảnh báo xuất hiện. Vì vậy, thử nghiệm của tôi dường như hoạt động. Có ai cho tôi biết tôi đã làm gì sai không? Tôi đang sử dụng jQuery 1.8.3 và qTip2 với jQueryValidate. Cảm ơn bạn rất nhiều!

Trả lời

9

Cú pháp của bạn và việc sử dụng plugin chính xác từ những gì bạn đã cung cấp. Bạn cần khắc phục sự cố, vì vậy trước tiên, hãy thử này

marque: { 
    required: true; 
} 

đơn giản. Thông báo lỗi có xuất hiện không? Nếu có thì thử này

marque: { 
    required: { 
     depends: function() { return true; /* or false */ } 
    } 
} 
+0

Cảm ơn câu trả lời của bạn! Tôi đã làm điều này và không có gì xảy ra. Có lẽ vấn đề là trường này là một danh sách thả xuống. Vì vậy, tôi đã sử dụng phương pháp personnal mà tôi đã sử dụng ở dạng khác. Nó trả về một số nguyên thay vì "true" hoặc "false" và giờ nó hoạt động. – LancelotKiin

4

Bạn thực sự sẽ có thể làm điều này mà không có sự lựa chọn depends, chỉ cần thực hiện công việc chức năng trực tiếp trên required đối tượng:

rules: { 
    marque: { 
      required: function() { 
       if (($('#add_marque').val() == "Ajouter une marque" && (('#marque').val() == -1) || ($('#add_marque').val() == "" && $('#marque').val() == -1)) { 
        return true; 
       } 
       else { 
        return false; 
       } 
      } 
    } 
} 

Xem làm việc, ví dụ đơn giản ở đây : http://jsfiddle.net/ryleyb/3hqH6/1/

+2

Thay vì 'if ... else' bạn chỉ có thể có:' return (NẾU ĐIỀU KIỆN Ở ĐÂY) ' – rybo111

+1

Tôi không muốn gây nhầm lẫn cho người hỏi - vấn đề tôi giải quyết là cách tổ chức 'quy tắc' vật. Điểm tốt mặc dù! – Ryley

+0

Điều này đã giúp giải quyết tình huống tương tự mà tôi cần để kiểm tra giá trị cụ thể của một trường khác, mà thuộc tính 'depends' dường như là thích hợp. Phương thức '.call()' của Validator trên hàm được cung cấp đã gặp lỗi, nhưng hàm giống hệt được truyền cho 'required' thay vì một boolean được thực hiện như mong đợi. –

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