2012-07-07 53 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; 
} 
});