jQuery返回错误选择的radiobox?

时间:2011-10-27 14:44:57

标签: jquery button radio

我有一个包含两个单选按钮的表单输入,名称如下:

<label for="thumb">[thumb]</label> 
<input type="radio" name="type" value="thumb" checked />
<label for="img">[img]</label><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" />
<noscript>Please enable Javascript or use the <a href='index2.php'>old generator</a></noscript>
</head>
<body>
<h2>Thumb/img BBCode generator for Facepunch</h2>
<div id="content">
<form id="f" action="generate2.php" method="POST">
<label for="thumb">[thumb]</label> 
<input type="radio" name="type" value="thumb" checked />
<label for="img">[img]</label><input type="radio" name="type" value="img" /><br />
<textarea rows="30" cols="40" name="text">Insert image links on seperate lines</textarea><br />
<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>

实时版:http://pdo.elementfx.com/thumb/

5 个答案:

答案 0 :(得分:6)

您遇到的问题是is选择器返回一个布尔值而不是匹配的元素。这意味着您最终会在val()上调用true / false而不是单选按钮。

尝试使用以下选择器

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

小提琴:http://jsfiddle.net/fP2P4/1/

答案 1 :(得分:1)

请改用:

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

使用is(':checked')返回一个布尔值(true / false),它没有.val()并触发错误。

答案 2 :(得分:1)

如果选中该元素,

is(':checked')将返回true。您不希望它返回true或false,您想要选择已检查的元素,因此请使用

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

答案 3 :(得分:0)

你也可以使用$('input [name =“type”]')。prop('checked');如果你愿意的话。

编辑:http://jsfiddle.net/pVhn8/

答案 4 :(得分:0)

is()方法返回一个布尔值,因此不清楚如何使这个语句起作用:$('input[name="type"]').is(':checked').val();

您应该使用$('input[name="type"]:checked').val()代替。