2012-07-07 104 views
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> 
+0

伙计们,选择'$(”输入[名称=值]:选中')'工作。这不是错误;它是关于'undefined'的。仍然宁愿首先重写这个检查'.length'。 ) – raina77ow 2012-07-07 22:33:36

回答

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(); 

你的原代码,虽然是非常接近,只有一个单个错误:您应该将optundefined(一个变量)进行比较,而不是'undefined'(一个字符串)。

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

opt != 'undefined'实际上将始终评估为false,在你的HTML没有单选按钮具有价值'undefined'。再次考虑false'false'之间的差异 - 后者实际上是一个真值(尽管不等于true);

+0

好点谢谢 – user618879 2012-07-07 23:24:21

1
$("checkbox").is(":checked"); 

这返回true或false。如果被选中或不

0

如果使用.is()

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

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

if (! $("input").not(':checked')) 
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; 
} 
}); 
相关问题