想不选择单选按钮应该返回空字符串

时间:2011-05-03 13:06:18

标签: jquery html ajax

我有以下HTML

<form id="create_form" name="create_form" action="" method="post">
<input name="type" id="type" value="individuel" type="radio" /> Individuel <br/>
<input name="type" id="type" value="course"     type="radio" /> Course <br/>

<button class="n" type="submit">Create</button>
</form>

当我得到单选按钮的值时,如果没有选中,我的JQuery / Ajax脚本会返回第一个单选按钮。

$(document).ready(function(){
    $("form#create_form").submit(function() {
    var type = $('input:radio[name=type]:checked').val();
        ...

我希望用户被迫考虑选择哪个,而不仅仅是默认值。

这是怎么做到的?

更新

我会认为

$(document).ready(function(){
    $("form#create_form").submit(function() {
    var type = $('input:radio[name=type]:checked').val();

表示仅使用id="create_form"获取表单中单选按钮的值。

但是因为我有下面的表单(<form id="something_else")和这些表单中的单选按钮也带有name="type",所以它提取了该值。

在html和JQuery中将name=type更改为name=cname解决了这个问题。

听起来像是JQuery中的一个错误,不是吗?

2 个答案:

答案 0 :(得分:3)

尝试像这样定义变量(获取空字符串):

var type = $('input:radio[name=type]:checked').val() || '';

嗯,好的回答关于让用户选择的问题......试试这个:

var type = $('input:radio[name=type]:checked').val();
if (typeof type === 'undefined') {
  alert('You must make a choice!'); 
  return false;
}

答案 1 :(得分:2)

如果

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

不起作用?

你也可以尝试这样:

var is_checked = true;
$('input:radio').each(function(){
   is_checked = is_checked && $(this).is(':checked');
});
if ( ! is_checked );