2011-05-11 41 views
14
<select id="Nazione" name="Nazione"> 
    <option prefix='+93' value='AF' >Afghanistan </option> 
    <option prefix='+355' value='AL' >Albania </option> 
    <option prefix='+213' value='DZ' >Algeria </option> 
    <option prefix='+376' value='AD' >Andorra .... etc 
</select> 

và điều này jsJquery chọn thay đổi

$(document).ready(function() { 
    $('#Nazione').change(function(){ 

     alert($(this).find("option:selected").attr('prefix')); 
     alert($(this).attr('prefix')); 
    }); 
    }); 

Tôi có NULL cảnh báo ... tại sao?

+0

[Làm việc cho tôi] (http://jsfiddle.net/trxZK/). – lonesomeday

+0

http://jsfiddle.net/wzzMm/ hoạt động ở đây trong Chrome! – rsplak

+0

Bạn chưa đóng thẻ tùy chọn cho mục nhập cuối cùng.Đó là lỗi chính tả hoặc lỗi trong mã? – Ammu

Trả lời

10

Mã của bạn vẫn ổn. Dưới đây là một bản demo: http://jsfiddle.net/hKktc/1/

Lý do bạn không nhận được một giá trị cho cuộc gọi cảnh báo thứ hai là bởi vì thuộc tính prefix không tồn tại cho select và chỉ tồn tại cho option

+0

TRY WITH JQUERY 1.5.2 ....... BUG ?? – Ste

+1

Đó là một vấn đề thực sự kỳ lạ. Vấn đề không phải là với mã, thay vì với tên thuộc tính. Nếu bạn thay đổi nó thành 'prefix1' nó hoạt động: http://jsfiddle.net/hKktc/7/ Tôi không biết đó là lỗi hay cái gì khác – JohnP

+0

'tiền tố' có thể là một từ khóa! :) –

4

Trong mã của bạn, $(this) đề cập đến <select>, không phải tùy chọn. Thuộc tính prefix không tồn tại trên <select>

Điều này sẽ gây ra sự cố với ví dụ thứ hai.

4

The 2nd alert sẽ trở lại null, bởi vì <select> không có thuộc tính prefix.

1

Bạn đang mong đợi chính xác điều gì?

Tôi thấy rằng cảnh báo thứ hai - alert($(this).attr('prefix')); là sự cố gây ra sự cố. Như vậy, bạn sẽ nhận được cảnh báo về số tiền tố, sau đó cảnh báo về số không (do cảnh báo thứ hai gây ra).

+0

Làm theo mẹo tắt bởi @JohnP ở trên - nó thực sự hoạt động hoàn hảo nếu bạn thay đổi tiền tố atrtibute thành một thứ khác. Tôi đoán 'tiền tố' được dành riêng. Ngoài ra, điều này đẹp hơn một chút - '$ (tài liệu) .ready (function() { $ ('# Nazione'). Thay đổi (function() { alert ($ ('option: selected', this) .attr ('prefix1')); }); }); ' Mã đó bởi @SLaks trong [chủ đề này] (http://stackoverflow.com/questions/2230704/jquery-getting-custom- tùy chọn thuộc tính-từ-được chọn). – phil

0

Bạn có thể muốn .val() không .attr('prefix'), để nhận giá trị được chọn là <select>.

$(document).ready(function() { 
    $('#Nazione').change(function(){ 

     alert($(this).find("option:selected").attr('prefix')); 
     alert($(this).val('prefix')); 
    }); 
    }); 
Các vấn đề liên quan