0

我想检查是否使用 jquery 检查了一个框。如果未选择任何选项,我的目标是防止表单隐藏。

$("#submit").click(function(){  
var opt = $('input[name=value]:checked').attr('value');
if(opt!='undefined'){
$.ajax({
type: "POST",
url: url,
data: 'option='+opt,
cache: false,
success: function(html)
{   
 alert(opt);

}
     });
}       
return false;
});

html

<form id="form" method="post" action="">
<input type="radio" name="value" value="1" />1<br>
<input type="radio" name="value" value="2" />2<br>
<input type="radio" name="value" value="3" />3<br>
<input type="radio" name="value" value="4" />3<br>
<input id="submit" type="submit" value="submit"/>
</form>
4

5 回答 5

2

我建议$('input[name=value]:checked').length在做任何其他事情之前先检查一下。) 如果没有检查任何元素,它将等于 0。换句话说,替换

var opt = $('input[name=value]:checked').attr('value');

...和

var $checkedElement = $('input[name=value]:checked');
if (! $checkedElement.length) {
   // no option was selected, return false or alert
} 
var opt = $checkedElement.val();

但是,您的原始代码非常接近,只有一个错误:您应该比较opt( undefineda variable ),而不是'undefined'(a string)。

if (opt != undefined) { ... do the thing .. }

opt != 'undefined'实际上总是评估为false,因为您的 HTML 中没有单选按钮具有价值'undefined'false再次考虑和之间的区别'false'- 后者实际上是一个真值(尽管不等于true);

于 2012-07-07T22:22:49.697 回答
1
$("checkbox").is(":checked");

这返回真或假。是否检查

于 2012-07-07T22:25:00.710 回答
0

演示 http://jsfiddle.net/ZKC2z/

好读:http ://api.jquery.com/checked-selector/

还有一个:not选择器

.is(":checked")将为您解决问题。

于 2012-07-07T22:26:54.907 回答
0

如果没有检查使用.is()

if ( ! $("input").is(':checked') )

只是!在之前添加,或使用.not()

if ( ! $("input").not(':checked') )
于 2012-07-07T22:30:36.747 回答
0

希望这会有所帮助...

$("#submit").click(function(){  
var opt = $('input[name=value]:checked').attr('value');
if(opt){
 alert(opt + "- ok, posting!");
 return true;
} else {
 alert('pick something first');
 return false;
}
});
于 2012-07-07T22:43:23.170 回答