2010-02-27 25 views
9

Javascript có textObject.defaultValue=somevalue để truy xuất giá trị mặc định (giá trị được lưu trữ từ tải trang) của đầu vào ngay cả khi bạn xóa đầu vào và thay thế nội dung, bạn vẫn có thể lấy lại mặc định. Như thế này:tài sản "defaultValue" cho <select>?

// in the html page 
<input id="addr1" type="text" value="21 Oak St." /> 

// the jquery 
myInput = $("#addr1"); // the input, default value on page load = 21 Oak St. 

$(myInput).val('51 New St'); // wipe default and set new 

// alerts 21 Oak St 
alert($(myInput).val($(myInput)[0].defaultValue)); 

Làm cách nào để bạn thực hiện việc này?

selectedIndex là boolean, không phải giá trị, do đó không hoạt động.

Cảm ơn!

+1

Tôi không nghĩ rằng 'selectedIndex' là một boolean nó phải là một số nguyên và như @Pointy nói nếu bạn lặp các tùy chọn được defaultSelected bạn có thể đặt chỉ mục được chọn thành chỉ mục của defaultSelected. – bendewey

+0

bạn cần sử dụng thuộc tính "đã chọn" trên chính tùy chọn bạn muốn làm mặc định. tiếp tục trên con đường đó. – vsync

Trả lời

17

Bạn có thể muốn xem thuộc tính "defaultSelected" của phần tử "tùy chọn".

Ban đầu, "defaultSelected" sẽ là true nếu HTML ban đầu của thẻ tùy chọn có thuộc tính "được chọn" rõ ràng. Bạn có thể thay đổi điều đó bằng cách đặt thuộc tính trên thẻ tùy chọn có Javascript sau khi trang đã tải, để đáp ứng với bất kỳ điều kiện nào bạn thích.

+1

+1 Không biết về điều này, tốt đẹp. – bendewey

0

có thể có nhiều phần tử tùy chọn "đã chọn", trong trường hợp đó, chọn phần tử đầu tiên nếu không có yêu cầu nào khác được đặt. Mẹo @Pointy là chính xác nhưng lưu ý rằng thuộc tính "defaultValue" có thể bị ghi đè bởi mã khác trong cùng một trang. Nếu nó đã được chỉ đọc nó sẽ hữu ích hơn :-)

4

với Jquery chúng ta có thể làm sth như thế này:

$('select[name="type_id"] option').map(function() 
{ 
    if($(this).attr('defaultSelected')==true) return this 
}).get(0).value; 

này sẽ trả về giá trị tùy chọn mặc định được chọn :)

1

tôi sử dụng những điều sau đây để lặp qua một diễn đàn, kiểm tra các giá trị mặc định của chúng và các giá trị hiện tại của chúng.

nếu tập lệnh đi qua một hộp chọn duy nhất, nó sẽ lặp qua các trẻ em trên hộp chọn.

oFormObject = document.forms[0]; 
for(i=0; i<oFormObject.elements.length; i++) 
{ 
    oValue = oFormObject.elements[i].value; 
    oType = oFormObject.elements[i].type; 
    if(oType=='select-one') { 
     for(k=0; k<oFormObject.elements[i].children.length; k++) 
     { 
      if(oFormObject.elements[i].children[k].defaultSelected==true){ 
       oformElement = oFormObject.elements[i].children[k].value; 
      } 
     } 
    }else{ 
     oformElement = oFormObject.elements[i].defaultValue; 
    } 
    console.log(oformElement); 
    console.log(oValue); 
    console.log(oType); 
} 
5

Đây là jquery làm việc cho tôi:

$('select[name="name_of_select"] option[selected]').val() 
+0

Vấn đề duy nhất với điều này là nếu không có tùy chọn nào có thuộc tính HTML 'đã chọn', nó sẽ trả về không xác định. Nhưng trong trường hợp đó, giá trị mặc định là tùy chọn đầu tiên. – megaflop

0

Tôi tìm thấy một con đường ngắn nhất để làm điều này:

$('select#myselect').find('option[defaultSelected]'); 
0

tôi chạy trên tải trang để tự thiết lập defaultValue cho các hộp Chọn.

// Set a default value property on selectboxes (for reverting) 
$('select').each(function(index,ele) { 
    var origvalue = $(this).val(), 
     defaultvalue = $(this).prop('defaultValue'); 

    // If the default value hasn't already been set for this selectbox 
    if(!defaultvalue) { 
     $(this).prop('defaultValue', origvalue); 
    } 
}); 
0

Cách đơn giản nhất để làm điều này là:

$('#selectbox option').prop('selected', function() { 
    return this.defaultSelected; 
}); 
Các vấn đề liên quan