【问题标题】:Ensure all radio buttons have a value using jQuery使用 jQuery 确保所有单选按钮都有一个值
【发布时间】:2012-04-17 19:38:48
【问题描述】:

我有一个烦人的单选按钮问题/答案列表

你喜欢A还是B
你喜欢x还是y

这类问题。

标记看起来有点像:

<input type="radio" name="User[AnnoyingQuestion][1]" value="1|Do you like x or y?|X" id="Member[PartyProfile]_1_0" />

<input type="radio" name="User[AnnoyingQuestion][1]" value="1|Do you like x or y?|Y" id="Member[PartyProfile]_1_1" class="elp-radio-question">

基本上,我需要确保所有问题都已得到解答。 使用 jQuery 执行此操作的好策略是什么?

【问题讨论】:

  • 你所有的问题都是yes/no,两个选择题吗?
  • 这里有answers 对您有帮助吗?

标签: jquery


【解决方案1】:

证明:http://jsfiddle.net/iambriansreed/vXXUV/

将表单选择器设置得更准确。

<script>

    $(function(){

        $('form').submit(function(e){

            var radios = {}, success = true;

            $('input[type="radio"]').each(function(){

                 var name = $(this).attr('name');

                 if(name in radios) return true;                 

                 radios[name] = $('input[name="'+name+'"]:checked').length > 0;

            });    

            for(name in radios){
                if(!radios[name]){
                    success = false;
                    alert('Please enter a value for '+name);
                }
            }

            if(!success) e.preventDefault();

            else alert('Form Submitting...');

        });        

    });​

</script>

【讨论】:

  • 啊,我修好了。我想我应该摆弄它):干得好 ian +1
【解决方案2】:

您应该能够使用 jQuery 验证插件,正如这个问题所建议的那样:

Validation of radio button group using jQuery validation plugin

这里是验证插件文档:http://docs.jquery.com/Plugins/Validation/Methods

【讨论】:

    【解决方案3】:

    更新。试试这个

    function allChecked() {
        var $inputs = $('input[type="radio"]');
    
        $.each($inputs,function(){
            var $this = $(this),
            name = $this.attr('name');
    
            if ($('input[name="' + name +'"]:checked').length < 1){
                return false;
            }
        });
    
        return true;
    }
    

    这不是非常有效,但我认为它会起作用

    【讨论】:

    • -1 每个名称只需要选择一个收音机。您的函数需要全部选中。
    • @iambriansreed 是的,我意识到了这一点。修好了
    【解决方案4】:

    假设您的所有问题只有两个选项,这里有一个快速的方法。将选中的单选按钮的数量与单选按钮的总数进行比较。如果选中的框数不等于总数的一半,则说明没有选中。

    if( $('input[type=radio]:checked').length) == $('input[type=radio]').length/2) ...​​​​​​​​​​​​​​​​​​​
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      相关资源
      最近更新 更多