jquery
  • forms
  • validation
  • input
  • 2012-02-16 4205 views 34 likes 
    34

    Tôi đang cố gắng để chọn tất cả các yếu tố đầu vào trừ input type = "submit/reset/nútcách sử dụng jquery để chọn tất cả các đầu vào, không được gửi, đặt lại hoặc nút?

    Tôi đã cố gắng để làm cho một selector như thế này:

    inputSelector = 'input:not(input[type=button], input[type=submit], input[type=reset]), textarea, select'; 
    

    Nhưng điều này không làm việc, bởi vì nộp nút luôn luôn đảm vào lựa chọn cuối cùng.

    Bất cứ ý tưởng gì sai với bên trên.

    Cảm ơn!

    Trả lời

    48

    Hãy thử sửa đổi bộ chọn của bạn thành chuỗi .not(...) như:

    var inputs = $('input, textarea, select') 
           .not(':input[type=button], :input[type=submit], :input[type=reset]'); 
    
    $(inputs).each(function() { 
        console.log(this.type); 
    }); 
    

    Điều này làm cho nó (dễ hiểu) dễ đọc hơn và nên hoạt động như mong đợi.

    +0

    âm thanh tốt. chúng ta hãy thử. – frequent

    +0

    Tôi đang sử dụng nó trong một plugin, vì vậy tôi đoán tôi đang mắc kẹt với bộ chọn crummy. vẫn đang cố gắng ... – frequent

    +0

    Đặt giải pháp đầu tiên của bạn sao lưu. Họ đều tốt và làm cho ngày của tôi ... – frequent

    5

    Câu trả lời này được cho là khó đọc hơn Michael Robinson, nhưng tôi thấy nó gọn gàng hơn. Thay vì chạy hàm not(), bạn có thể chọn cho nó bằng cách sử dụng :input để thu thập tất cả các phần tử biểu mẫu, sau đó lọc với lớp giả :not() cho mỗi loại đầu vào không mong muốn.

    Từ tài liệu API của jQuery (https://api.jquery.com/input-selector/):

    Bộ chọn :input về cơ bản sẽ chọn tất cả các điều khiển form.

    Các "CSS" phiên bản selector -like, các :not() selectors psuedo phần tử riêng biệt, và có thể được sử dụng trong CSS 3, quá:

    var inputs = $("#theForm").find(":input:not([type=button]):not([type=submit]):not([type=reset])"); 
    
    Các vấn đề liên quan