2011-11-29 46 views
11

Tôi đang mượn/điều chỉnh mẫu đơn html/javascript đơn giản này để thiết lập một số dữ liệu trong cơ sở dữ liệu. Mã gốc sử dụng các trường văn bản trong biểu mẫu, nhưng tôi đang sử dụng các nút radio. Ba bước đầu tiên dưới đây là bản gốc và câu hỏi của tôi xuất hiện sau ... cụ thể là, tôi có cung cấp cho các nút radio cùng một id ... Hy vọng điều này là rõ ràng ...Hai nút radio chia sẻ một "id"?

Bước 1. Người dùng nhập giá trị vào biểu mẫu với id "nick"

<tr> 
    <td><label>User</label></td> 
    <td><input class="text user" id="nick" type="text" MAXLENGTH="25" /></td> 
</tr> 

Bước 2. giá trị gắn liền với id "nick" được gán cho biến sử dụng id

var inputUser = $("#nick"); 

Bước 3. nhận được giá trị từ biến để chèn vào cơ sở dữ liệu ...

if(inputUser.attr("value") 

nhưng nếu đó là hai "nút radio" hơn là một "văn bản" lĩnh vực ....

<td><label>Interview</label></td> 
<td><input type="radio" name="interview" id="nick" value="pass" />Pass</td> 
<td><input type="radio" name="interview" id="nick" value="fail" /> Fail</td> 

Tôi cung cấp cho các nút radio cùng "id" để nó vẫn như thế này khi tôi gán giá trị cho biến ...

var inputUser = $("#nick"); 

để chọn nút nào sẽ được chỉ định trong id "nick"?

+0

Các thành phần không thể chia sẻ id. Nó dẫn đến hành vi bất ngờ, đặc biệt khi sử dụng javascript. – mrtsherman

+1

tên của các nút radio có thể giống nhau không phải là id để bạn có thể thử như thế này ** var inputUser = $ (": input [name = interview]: checked"). Val(); ** cho giá trị nút radio đã chọn * * – punit

+0

Vui lòng tham khảo đặc điểm kỹ thuật HTML 4.01 trong đó nó cho biết id trùng lặp không được phép và không thay đổi kể từ thông số kỹ thuật 1999. http://www.w3.org/TR/REC-html40/ –

Trả lời

16

Không, thuộc tính Id phải luôn là duy nhất. Nếu bạn đang sử dụng jQuery (trông giống như bạn đang có), bạn có thể chọn nó với $('input[name=interview]');.

+0

cảm ơn, tôi là người mới, vui lòng xác nhận rằng toàn bộ dòng mà tôi chỉ định giá trị sẽ trông giống như sau: var inputUser = $ ('input [name = phỏng vấn] '); – Leahcim

+0

@Michael, phải, bộ chọn jQuery ngay tại đó sẽ nhận được tất cả các đầu vào có "tên" được đặt thành "phỏng vấn". inputUser sẽ lưu trữ đối tượng jQuery này. – Matthew

+0

Tôi đang thử điều này nhưng nó cho tôi biết biến không được xác định http://stackoverflow.com/questions/8320980/how-to-figure-out-where-this-database-insertion-and-retrieval-is-breaking – Leahcim

0

bạn phải gán cùng một tên nhưng id khác với input type=radio vì đây là thuộc tính cơ bản của nút raido mà bạn chỉ cần chọn một giá trị từ nút radio aal.

nhưng id rằng không nên được gán cho các yếu tố hình thức khác

0

Các id giao cho một yếu tố phải là duy nhất trong tài liệu. Vì vậy, không, bạn không nên sử dụng cùng một số id.

0

Thay vào đó của id="nick"

Bạn có thể sử dụng name="nick"

Hoặc

class="nick" 
+0

vì vậy điều này sẽ làm việc? var inputUser = $ (". nick"); với [.] đại diện cho lớp học? – Leahcim

+0

@Michael Ya sẽ hoạt động '$ (". Nick ")' với '$ .each()' ... Bạn có thể lấy tất cả các giá trị với cái này .... Cách tốt hơn là theo tên '$ ('đầu vào [ name = nick] ') 'sẽ cung cấp cho bạn giá trị đã chọn .... – Wazzzy

1

Đừng lặp lại id's.It là thực hành tốt nhất để sử dụng chỉ có một id mỗi trang vì nó phải là duy nhất.Bạn có thể nhóm các nút radio bằng cách sử dụng thuộc tính name.

sử dụng $('input[name=interview]') để nhận giá trị.

13

Vì bạn đang sử dụng jQuery, bạn có thể dễ dàng nhận được giá trị của nút radio được chọn bằng cách sử dụng các :checked selector:

$("input[name=interview]:checked").val() 

Bạn nên chắc chắn không từ bỏ nhiều hơn một yếu tố cùng một ID (đó là HTML không hợp lệ và sẽ dẫn đến các lỗi gây nhầm lẫn trong JavaScript của bạn), nhưng ngay cả khi nó hoạt động thì cũng không có ích gì trong trường hợp này vì các nút radio là một nhóm không có giá trị được chọn: bạn cần phải xác định cái nào hiện đang được kiểm tra và giá trị như được hiển thị ở trên. (Đây không phải là vấn đề khi nhận được giá trị trên máy chủ web khi biểu mẫu thực sự được gửi, bởi vì chỉ có giá trị từ radio đã chọn được gửi.)

Cũng lưu ý rằng trong mã ban đầu của bạn nơi bạn nói inputUser.attr("value"), bạn có thể đã nói inputUser.val().

4

Thuộc tính ID là duy nhất trên trang. Bạn nên có các Id khác nhau cho mỗi nút radio. Sử dụng mã bên dưới để nhận giá trị đầu vào.

var inputUser=$('input:radio[name=interview]:checked').val(); 
+0

Tôi đã thử giải pháp của bạn nhưng nó cho tôi biết biến chưa được xác định. http://stackoverflow.com/questions/8320980/how-to-figure-out-where-this-database-insertion-and-retrieval-is-breaking – Leahcim

1

Nếu muốn sử dụng javascript tinh khiết bạn phải sử dụng ..

document.querySelector('input[name=radio_btn_name]'); 

nhưng nó cần trình duyệt được cập nhật. Các trình duyệt cũ có thể không chính xác.

Để khắc phục sự cố này, thư viện javascript sẽ được sử dụng (thư viện sẽ xử lý sự cố). Để sử dụng như sau ..

$('input[name=radio_btn_name]:checked').val(); 
Các vấn đề liên quan