jquery
  • forms
  • css-selectors
  • element
  • hidden
  • 2009-06-15 11 views 12 likes 
    12

    (answers aggregated into another question)jquery chọn không thể đọc được từ lĩnh vực ẩn

    sau Mã jquery 1.3.2 hoạt động:

    <input type="select" value="236434" id="ixd" name='ixd' /> 
    
    <script> 
    console.log($('#ixd')); 
    console.log($("input[name='ixd']")); 
    </script> 
    

    điều khiển cho thấy:

    [input # ixd 236.434]

    [nhập # ixd 236434]

    Tuy nhiên, thiết lập đầu vào thành "ẩn" ngăn cản bộ chọn hoạt động. Bất kì manh mối nào?

    <input type="hidden" value="236434" id="ixd" name='ixd' /> 
    
    <script> 
    console.log($('#ixd')); 
    console.log($("input[name='ixd']")); 
    </script> 
    

    điều khiển cho thấy:

    []

    []

    Trả lời

    27

    Không chắc tại sao điều đó sẽ thất bại. Tôi làm điều tương tự ở nơi làm việc một cách thường xuyên, và nó hoạt động bất kể formfield bị ẩn hay không.

    Có lẽ thử điều này:

    <input type="hidden" value="236434" id="ixd" name='ixd' /> 
    
    <script> 
        console.log($("#xid").val()) 
    </script> 
    

    Điều đó sẽ giúp bạn có được giá trị của các trường ẩn. Để lấy giá trị ra khỏi một trường biểu mẫu, phương thức .val() cần được sử dụng.

    +2

    +1: Ông nên sử dụng .val() để lấy giá trị của lĩnh vực này. –

    +1

    Đã thử rằng, tôi đã cố gắng chỉ ra rằng các bộ chọn không hoạt động thay vì sử dụng đầu ra :) – Andy

    +0

    Ngoài ra, mã này không hoạt động! – Andy

    2

    Đây có thể là vấn đề với bảng điều khiển. Tôi chạy một thử nghiệm và có vẻ như vẫn lấy trường hợp của phần tử. Tôi không thể nói chính xác những gì bạn đang cố gắng làm ở đây.

    Nếu bạn đang cố gắng để xác nhận thời tiết các đối tượng đã được tìm thấy kiểm tra các thuộc tính length

    console.log($('#xid').length); 
    

    Nếu bạn đang cố gắng để có được những giá trị của lĩnh vực này sau đó sử dụng phương pháp val

    console.log($('#xid').val()); 
    

    Cuối cùng, có khả năng là trong giải pháp của bạn, DOM chưa được tải đầy đủ. Hãy chắc chắn rằng bạn đang gói logic của bạn bên trong một cuộc gọi document.ready.

    $(document).ready(function() { 
        console.log($('#xid').val()); 
    }); 
    
    +0

    Rất cám ơn, đây là giải pháp - nhưng tại sao điều này không hoạt động trong trường hợp này khi các thẻ

    1

    Nếu bạn đang thực hiện việc này trong ASP.Net, hãy kiểm tra ID của kiểm soát của bạn khi chạy qua tùy chọn Xem nguồn trong trình duyệt của bạn. Bạn có thể thấy rằng ID kiểm soát của bạn không phải là thứ bạn mong đợi nếu như, kiểm soát của bạn được khai báo trong một trang nội dung. Trong trường hợp này, nó sẽ được gán một ID được điều khiển bởi trang chính của nó. Thay vì mã hóa cứng ID trong jQuery của bạn, bạn có thể tham khảo thuộc tính ClientID của nó bằng cách sử dụng cú pháp nội tuyến ASP.Net, nó cũng sẽ bảo vệ bạn khỏi bất kỳ thay đổi nào trong hệ thống phân cấp điều khiển trang chính hoặc nội dung.

    Vậy ...

    $('#<%= myHiddenControl.ClientID %>').val(); 
    

    ... sẽ là một lựa chọn tốt hơn so với ...

    $('#ctl00_ContentPlaceHolder1_ctl00_ContentPlaceHolder1_myHiddenControl').val(); 
    

    ... mặc dù họ sẽ cả hai công việc.

    0

    Nếu không có công việc trên thử

    $('#xid').attr('value');