2014-01-13 179 views
2

我有一个页面,我有一堆单选按钮,并在这些单选按钮上踢会导致最近的文本输入变成文件输入,以防他们有图像,他们希望上传。取消选择和选择变化的jQuery单选按钮

我的问题是,如果他们决定他们不想要一个图像,我希望他们能够取消选择该单选按钮,并做一些功能,将该文件改回文本输入。

我的html看起来像这样,除了我有更多<tr>然后这个。我只是不想在这里转储一堆代码。

<table> 
    <tbody> 
    <tr id="1"> 
     <td>Correction 1</td> 
     <td><input type="number" name="page1" class="form-control" min="1" max="10000"></td> 
     <td><input type="number" name="pargraph1" class="form-control" min="1" max="100000"></td> 
     <td><input type="number" name="line1" class="form-control" min="1" max="100000"></td> 
     <td><p><input type="radio" name="add_image1" class="imageInput" value="" /> Adding</p> 
     <p><input type="radio" name="add_image1" class="imageInput" value="" /> Replacing</p> 
     </td> 
     <td class="hidden-480"><input type="text" name="incorrect1" value="" class="form-control" /></td> 
     <td class="hidden-480 correct"><input type="text" name="correct1" value="" class="form-control" /></td> 
     <td><input class="btn-small btn btn-success" type="submit" name="" value="Done" /></td> 
    </tr> 
    </tbody> 
</table> 

我的查询看起来像这个时刻。

$('.correctionList').on('change', '.imageInput', function() { 

    if($('.imageInput').is(':checked')) { 
     $(this).closest($('tr')).find('.correct').html('<input type="file" name="correct'+num+'" value="" class="form-control" /></td>'); 
     $(this).addClass('selected'); 
     $(this).prop('checked', true); 
    } 

    if($('.imageInput').hasClass('selected') && $('.imageInput').is(':checked')){ 
        $(this).closest($('tr')).find('.correct').html('<input type="text" name="correct'+num+'" value="" class="form-control" /></td>'); 
     $(this).removeClass('selected'); 
     $(this).prop('checked', false); 
    } 
}); 

我知道我在这里的正确轨道,但也许我没有调用正确的方法来取消选择单选按钮。任何帮助都是极好的。

这是一个jsFiddle来显示正在发生的事情。 http://jsfiddle.net/pPE9W/

+0

@NickR可以取消使用此代码$单选按钮(这).prop( '检查',虚假);我遇到了一个问题,我怎么称呼它才能工作。我不能使用复选框,因为我不希望它们能够选择两者,它必须是或者 – zazvorniki

+1

我同意@NickR,因为它仍然不是非常直观的让用户取消选择单选按钮。如果选择了复选框,只需使用一些脚本即可取消选择另一个脚本。 – Goose

+0

@Goose由于我上面提到的原因以及其他原因,我无法使用复选框。而我的界面分层的方式,你没有看到,实际上非常直观。 – zazvorniki

回答

2

这是一个有点丑陋,但它的工作原理:

$(document).on('mousedown', 'input[type=radio]:checked', function() { 
    var that = $(this); 
    setTimeout(function() { 
     $(that).prop('checked', false); 
    }, 150); 
}); 

http://jsfiddle.net/isherwood/pPE9W/1/

+0

只要它有效,它可能会有点难看。哈哈非常非常感谢你! – zazvorniki