jQueryが誤って選択したラジオボックスを返すのですか?

私は以下のように、1つの名前の2つのラジオボタンからなるフォーム入力を持っています:

 
<input type="radio" name="type" value="thumb" checked />
<input type="radio" name="type" value="img" />

jQuery関数内では、どのようなものがチェックされているかを参照します。

type=$('input[name="type"]').is(':checked').val();

何らかの理由で、たとえ私がページ上のチェックボックスを変更したとしても、常に前者を返します。

削除の目的で、完全なコードは次のとおりです。

<html>
<head>
<title>Thumb/img BBCode generator</title>
<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'></script>
<meta http-equiv="Content-Style-Type" content="text/css" />
<link href="style.css" rel="stylesheet" type="text/css" />

</head>
<body>

Thumb/img BBCode generator for Facepunch

<div id="content">
<form id="f" action="generate2.php" method="POST">
 
<input type="radio" name="type" value="thumb" checked />
<input type="radio" name="type" value="img" />

<input type="button" value="Generate!" id="1_c"/> </form> </div> <script> $('#1_c').click(function(){ var text=$('textarea').val(), type=$('input[name="type"]').is(':checked').val(); $.post('generate2.php', { text: text, type: type }, function(data) { $("#content").html(data); }); }); function reset(){ history.go('0'); } </script> </body>

Live version: http://pdo.elementfx.com/thumb/

2
ちなみに、IDはアルファベット文字で始まる数字で始まるはずではありません。
追加された 著者 Blazemonger,

5 答え

実行している問題は、 is セレクタがブール値を返し、一致した要素を返さないということです。つまり、ラジオボタンの代わりに true/falseval()を呼び出すことになります。

次のセレクタを使用してみてください。

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

Fiddle: http://jsfiddle.net/fP2P4/1/

6
追加された
@SatansFate私は、私が推薦するセレクターを示しているバイブルの例で私の答えを更新しました
追加された 著者 JaredPar,
@SatansFateライブサンプルには、私の例のようにセレクタの:checked という接尾辞がありません。これは、チェックされたものを選ぶために必要です
追加された 著者 JaredPar,
@SatansFateええ、良いコーダーであることの一部は、そのようなダムの間違いをしています。それはちょうど起こる(そしてそれは経験と一緒に逃げない)。 :)
追加された 著者 JaredPar,
いいえ、そうではありません...毎回「親指」を返します。私はすでにそれを試みました。
追加された 著者 SatansFate,
また、実例で質問を更新しました.- pdo.elementfx.com/thumb
追加された 著者 SatansFate,
ああ、私は申し訳ありません - 私はコーディングのために切り捨てられていないことをさらに証明します。私はアーカイブされたバージョンを編集していました。
追加された 著者 SatansFate,

代わりにこれを使用してください:

type = $('input[name="type"]:checked').val();

is( ':checked')を使用すると、 .val()を持たないブール(true/false)が返され、エラーが発生します。

1
追加された
同じ問題と同じですか?これは問題なく動作します: jsfiddle.net/mblase75/PEWp2
追加された 著者 Blazemonger,

is(':checked') returns true if the element is checked. You don't want it to return true or false, you want to select the element that is checked, so use

type = $('input[name="type"]:checked').val();
1
追加された

$( 'input [name = "type"]')。prop( 'checked');を使用することもできます。もしあなたが好きなら。

edit: http://jsfiddle.net/pVhn8/

0
追加された
何の問題?答えるためにフィドルが追加されました。
追加された 著者 jbabey,
それでも同じ問題。
追加された 著者 SatansFate,

The is() method returns a Boolean so it's not clear how you got this statement to work: $('input[name="type"]').is(':checked').val();

代わりに、 $( 'input [name = "type"]:checked')。val()を使用する必要があります。

0
追加された