Kiểm tra một nút radio bằng javascript


95

Vì một số lý do, tôi dường như không thể tìm ra điều này.

Tôi có một số nút radio trong html của mình để chuyển đổi các danh mục:

<input type="radio" name="main-categories" id="_1234" value="1234" /> // All
<input type="radio" name="main-categories" id="_2345" value="2345" /> // Certain category
<input type="radio" name="main-categories" id="_3456" value="3456" /> // Certain category
<input type="radio" name="main-categories" id="_4567" value="4567" /> // Certain category

Người dùng có thể chọn bất kỳ cái nào họ muốn, nhưng khi một sự kiện nhất định kích hoạt, tôi muốn đặt 1234thành nút radio đã chọn, vì đây là nút radio được chọn mặc định.

Tôi đã thử các phiên bản của điều này (có và không có jQuery):

document.getElementById('#_1234').checked = true;

Nhưng nó dường như không cập nhật. Tôi cần nó cập nhật rõ ràng để người dùng có thể nhìn thấy nó. Ai có thể giúp đỡ?

CHỈNH SỬA: Tôi chỉ mệt mỏi và bỏ qua #, cảm ơn vì đã chỉ ra, điều đó và $.prop().


Kiểm tra câu hỏi StackOverflow này: [Làm thế nào để kiểm tra một nút radio với jQuery] [1] [1]: stackoverflow.com/questions/5665915/...
Mandy Schoep

8
đổi thànhdocument.getElementById('_1234').checked = true;
stackErr

1
@stackErr không có#
Tim Seguine

Xin lỗi, chỉ là một bản sao-dán sai. Đã cập nhật ngay bây giờ. @FelipeKM Sau đó, hãy giúp tôi, tôi không tìm thấy cái nào hữu ích.
ptf

@kjelelokk kiểm tra nhận xét của tôi hoặc câu trả lời của
Pointys

Câu trả lời:


151

Không trộn cú pháp CSS / JQuery ( #cho số nhận dạng) với JS gốc.

Giải pháp JS gốc:

document.getElementById("_1234").checked = true;

Giải pháp JQuery:

$("#_1234").prop("checked", true);


1
Về mặt kỹ thuật, đó là cú pháp của bộ chọn CSS. jQuery chỉ mượn và mở rộng nó
Tim Seguine

jQuery nhận được nó từ querySelectortôi sẽ tưởng tượng.
Andy

tốt hơn nhiều so.attr("checked", "checked")
ma77c

@Andy - Sizzle đã được sử dụng trong jQuery từ đầu năm 2006 trở đi. ( en.wikipedia.org/wiki/JQuery#History ). querySelectorkhông được xuất bản trong các trình duyệt cho đến năm 2009 và không được các nhà phát triển sử dụng rộng rãi cho đến một thời gian sau đó. Tôi chưa bao giờ sử dụng jQuery nhiều như vậy, nhưng nó ảnh hưởng đáng kể đến sự phát triển của JS.
Rounin

điều này đặt hộp kiểm nhưng không nhất thiết phải kích hoạt sự kiện liên quan. sự kiện nào được kích hoạt khi người dùng nhấp vào nút radio?
robisrob

16

Nếu bạn muốn đặt nút "1234", bạn cần sử dụng "id" của nó:

document.getElementById("_1234").checked = true;

Khi bạn đang sử dụng API trình duyệt ("getElementById"), bạn không sử dụng cú pháp bộ chọn; bạn chỉ cần chuyển giá trị "id" thực tế mà bạn đang tìm kiếm. Bạn sử dụng cú pháp bộ chọn với jQuery hoặc .querySelector().querySelectorAll().


mọi người đang nhận phần tử theo ID Tôi có nhiều nút radio có cùng tên. và tôi nghĩ đó là điều mà hầu hết mọi người cần chọn một nhóm radio theo tên và sau đó dựa trên giá trị kiểm tra một trong số chúng.
Ndm Gjr

@NadeemGorsi thuộc tính "id" không thể được chia sẻ bởi nhiều phần tử. Tất cả các giá trị "id" phải là duy nhất trên một trang nhất định.
Pointy

9

Hôm nay, vào năm 2016, có thể sử dụng document.querySelectormà không cần biết ID (đặc biệt nếu bạn có nhiều hơn 2 nút radio):

document.querySelector("input[name=main-categories]:checked").value

3
OK, nhưng làm thế nào tôi có thể nhận được hiệu ứng ngược hoặc kiểm tra một đài phát thanh dựa trên giá trị .. và đó là câu hỏi thực tế.
Ndm Gjr

1
@NadeemGorsi tôi cung cấp một câu trả lời để chọn hoặc "kiểm tra" một nút radio sử dụng querySelector
kevinf

6

Cách dễ nhất có lẽ là với jQuery, như sau:

$(document).ready(function(){
  $("#_1234").attr("checked","checked");
})

Điều này thêm một thuộc tính mới "đã kiểm tra" (trong HTML không cần giá trị). Chỉ cần nhớ bao gồm thư viện jQuery:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

Hoặc chỉ$("#_1234").prop("checked", true)
không xác định.

3

Bằng cách sử dụng document.getElementById()hàm, bạn không cần phải chuyển #trước id của phần tử.

Mã:

document.getElementById('_1234').checked = true;

Demo: JSFiddle


3

Tôi đã có thể chọn (kiểm tra) một nút nhập radio bằng cách sử dụng mã Javascript này trong Firefox 72, trong trang tùy chọn Tiện ích mở rộng Web để TẢI giá trị:

var reloadItem = browser.storage.sync.get('reload_mode');
reloadItem.then((response) => {
    if (response["reload_mode"] == "Periodic") {
        document.querySelector('input[name=reload_mode][value="Periodic"]').click();
    } else if (response["reload_mode"] == "Page Bottom") {
        document.querySelector('input[name=reload_mode][value="Page Bottom"]').click();
    } else {
        document.querySelector('input[name=reload_mode][value="Both"]').click();
    }
});

Nơi mã được liên kết để LƯU giá trị là:

reload_mode: document.querySelector('input[name=reload_mode]:checked').value

Cho HTML như sau:

    <input type="radio" id="periodic" name="reload_mode" value="Periodic">
    <label for="periodic">Periodic</label><br>
    <input type="radio" id="bottom" name="reload_mode" value="Page Bottom">
    <label for="bottom">Page Bottom</label><br>
    <input type="radio" id="both" name="reload_mode" value="Both">
    <label for="both">Both</label></br></br>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.