2011-11-29 14 views
11

Pożyczam/dostosowuję tę prostą formę html/javascript, aby umieścić trochę danych w bazie danych. Oryginalny kod używa pól tekstowych w formularzu, ale używam przycisków radiowych. Pierwsze trzy kroki poniżej są oryginalne, a moje pytanie pojawia się po ... konkretnie, czy nadaję przyciskom radiowym taki sam identyfikator ... Mam nadzieję, że jest jasne ...Dwa przyciski radiowe mają jeden "identyfikator"?

Krok 1. Użytkownik wprowadza wartość do formularza z id "nick"

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

Krok 2. wartości związanej z identyfikatorem "nick" przypisana do zmiennej za pomocą Numer ID

var inputUser = $("#nick"); 

Krok 3. uzyskanie wartości od zmiennej do wprowadzania do bazy danych ...

if(inputUser.attr("value") 

ale jeśli to dwa „przyciski radiowe” zamiast jednego „tekst” dziedzinie ....

<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> 

Czy dam przycisków radiowych ten sam „id”, tak, że wciąż tak kiedy przypisać wartość zmiennej ...

var inputUser = $("#nick"); 

tak, że którykolwiek przycisk jest zaznaczony zostanie przypisany w identyfikatorze "nick"?

+0

Elementy nie mogą współdzielić identyfikatora. Prowadzi to do nieoczekiwanego zachowania, szczególnie podczas korzystania z javascript. – mrtsherman

+1

nazwa przycisków radiowych może być taka sama, nie id, więc możesz spróbować tak ** var inputUser = $ (": input [name = interview]: checked"). Val(); ** dla wybranej wartości przycisku radiowego * * – punit

+0

Należy odnieść się do specyfikacji HTML 4.01, w której stwierdza się, że zduplikowane identyfikatory są niedozwolone i nie uległy zmianie od czasu specyfikacji z 1999 r. http://www.w3.org/TR/REC-html40/ –

Odpowiedz

16

Nie, atrybut Id powinien być zawsze unikalny. Jeśli używasz jQuery (wygląda na to, że jesteś), możesz wybrać go pod numerem $('input[name=interview]');.

+0

dziękuję, jestem nowicjuszem, proszę potwierdzić, że cała linia gdzie przypiszę wartość będzie wyglądać tak: var inputUser = $ ('input [nazwa] = wywiad] "); – Leahcim

+0

@Michael, prawy, selektor jQuery tam dostanie wszystkie wejścia z "name" ustawionym na "interview". inputUser zapisze ten obiekt jQuery. – Matthew

+0

Próbuję tego, ale mówi mi, że zmienna jest niezdefiniowana http://stackoverflow.com/questions/8320980/how-to-figure-out-where-this-database-insertion-and-retrieval-is-breaking- – Leahcim

0

musisz przypisać tę samą nazwę, ale inny identyfikator do input type=radio, ponieważ jest to podstawowa właściwość przycisku raido, że musisz wybrać tylko jedną wartość z przycisków radiowych givel aal.

ale id nie powinny być przypisane do innych elementów formularza

0

The id przypisany do elementu musi być unikalna w obrębie dokumentu. Więc nie, nie powinieneś używać tego samego id.

0

Zamiast z id="nick"

Można użyć name="nick"

Albo

class="nick" 
+0

, więc to zadziała? var inputUser = $ (". nick"); z [.] reprezentującą klasę? – Leahcim

+0

@Michael Ya, który działałby '$ (". Nick ")' z '$ .each()' ... Możesz uzyskać wszystkie wartości z tym .... Lepszy sposób jest po nazwie '$ ('input [ name = nick] ') 'da ci wybraną wartość ... – Wazzzy

1

Nie powtarzaj id's.It najlepiej jest używać tylko jeden identyfikator dla każdej strony, ponieważ muszą być unikatowe. Możesz grupować przyciski opcji za pomocą atrybutu name.

użyj $('input[name=interview]'), aby uzyskać wartość.

13

Ponieważ używasz jQuery można łatwo uzyskać wartość wybranego przycisku radiowego za pomocą wybieraka :checked:

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

Należy zdecydowanie nie dać więcej niż jeden element tego samego identyfikatora (to nieprawidłowy kod HTML i doprowadzi to do mylących błędów w twoim JavaScript), ale nawet gdyby to zadziałało, nie pomogłoby to w tym przypadku, ponieważ przyciski radiowe jako grupa nie mają wybranej wartości: musisz określić, który z nich jest aktualnie sprawdzany, a następnie uzyskać jego wartość jak pokazano powyżej. (Nie stanowi to problemu przy uzyskiwaniu wartości na serwerze internetowym po przesłaniu formularza, ponieważ przesłana zostanie tylko wartość z zaznaczonego radia.)

Należy również pamiętać, że w oryginalnym kodzie, w którym podano: inputUser.attr("value"), można Powiedziałem: inputUser.val().

4

Atrybut ID jest unikalny na całej stronie. Powinieneś mieć różne identyfikatory dla każdego przycisku opcji. Użyj poniższego kodu, aby uzyskać wartość wejściową.

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

Próbowałem twojego rozwiązania, ale mówi mi, że zmienna jest niezdefiniowana. http://stackoverflow.com/questions/8320980/how-to-figure-out-where-this-database-insertion-and-retrieval-is-breaking – Leahcim

1

Jeśli chcesz użyć czystego javascript trzeba użyć ..

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

ale trzeba zaktualizowaną przeglądarkę. Stare przeglądarki mogą być nieprawidłowe.

Aby rozwiązać ten problem, należy użyć biblioteki javascript (biblioteka zajmie się problemem). W tym celu użyj następującego polecenia:

$('input[name=radio_btn_name]:checked').val(); 
Powiązane problemy