Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery:检查是否有任何单选按钮是';t检查_Jquery_Html_Radio Button - Fatal编程技术网

jQuery:检查是否有任何单选按钮是';t检查

jQuery:检查是否有任何单选按钮是';t检查,jquery,html,radio-button,Jquery,Html,Radio Button,我指的是。尝试使用,但“我的”标记非常难看,我无法更改它 <form method="post"> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <tr> <td style="padding-left:20px; padding-right:20px"> <table cellspacing="3" cellpaddin

我指的是。尝试使用,但“我的”标记非常难看,我无法更改它

<form method="post">
  <table cellspacing="0" cellpadding="0" border="0" width="100%">
    <tr>
      <td style="padding-left:20px; padding-right:20px">
        <table cellspacing="3" cellpadding="2" border="0" width="100%">
          <tr>
            <td valign="top">1.</td>
            <td valign="top" colspan="2">Question</td>
          </tr>
          <tr>
            <td></td>
            <td width="5"><input value="question1_yes" name="question1" id="question1_yes" type="radio" /></td>
            <td><label for="question1_yes">Yes</label></td>
          </tr>
          <tr>
            <td></td>
            <td><input value="question1_no" name="question1" id="question1_no" type="radio" /></td>
            <td><label for="question1_no">No</label></td>
          </tr>
          <tr>
            <td></td>
            <td><input value="question1_dont_know" name="question1" id="question1_dont_know" type="radio" /></td>
            <td><label for="question1_dont_know">Don't know</label></td>
          </tr>
        </table>
      </td>
    </tr>
    <tr>
      <td style="padding-left:20px; padding-right:20px">
        <table cellspacing="3" cellpadding="2" border="0" width="100%">
          <tr>
            <td valign="top">2.</td>
            <td valign="top" colspan="2">Question</td>
          </tr>
          <tr>
            <td></td>
            <td width="5"><input value="question2_yes" name="question2" id="question2_yes" type="radio" /></td>
            <td><label for="question2_yes">Yes</label></td>
          </tr>
          <tr>
            <td></td>
            <td><input value="question2_no" name="question2" id="question2_no" type="radio" /></td>
            <td><label for="question2_no">No</label></td>
          </tr>
          <tr>
            <td></td>
            <td><input value="question2_dont_know" name="question2" id="question2_dont_know" type="radio" /></td>
            <td><label for="question2_dont_know">Don't know</label></td>
          </tr>
        </table>
      </td>
    </tr>
    <tr>
      <td style="padding-left:20px; padding-right:20px">
        <table cellspacing="3" cellpadding="2" border="0" width="100%">
          <tr>
            <td valign="top">3.</td>
            <td valign="top" colspan="2">Question</td>
          </tr>
          <tr>
            <td></td>
            <td width="5"><input value="question3_yes" name="question1" id="question3_yes" type="radio" /></td>
            <td><label for="question3_yes">Yes</label></td>
          </tr>
          <tr>
            <td></td>
            <td><input value="question3_no" name="question1" id="question3_no" type="radio" /></td>
            <td><label for="question3_no">No</label></td>
          </tr>
          <tr>
            <td></td>
            <td><input value="question3_dont_know" name="question3" id="question1_dont_know" type="radio" /></td>
            <td><label for="question3_dont_know">Don't know</label></td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
  <input type="submit">
</form>

1.
问题
对
不
不知道
2.
问题
对
不
不知道
3.
问题
对
不
不知道

如何更改?

如果您的标记是固定的,并且考虑到每个问题都嵌套在一个表中,您只需检查选中输入的数量,并将其与您拥有的表(在主表中)的数量进行比较,如下所示:

$('form').on('submit',function(e){
    // Counting number of questions
    arrayQuestions = new Array();
    $('input[type=radio').each(function(){
        arrayQuestions.push(this.name);
    });

    jQuery.unique( arrayQuestions );
    nbQuestion = arrayQuestions.length;
    nbAnsweredQuestion = $('input[type=radio]:checked').length;
    if(nbAnsweredQuestion < nbQuestion) {
         alert('You must answer every question');
         e.preventDefault();
    }
});
$('form')。关于('submit',函数(e){
//计算问题数量
arrayQuestions=新数组();
$('input[type=radio')。每个(函数(){
arrayQuestions.push(此名称);
});
jQuery.unique(arrayQuestions);
nbQuestion=arrayQuestions.length;
nbAnsweredQuestion=$('input[type=radio]:checked')。长度;
如果(nbAnsweredQuestion
看到小提琴了吗

编辑

请注意,在您的第三个问题中,第一个答案的两个名称为“问题1”,可能是打字错误

EDIT2


添加jQuery.unique以改进问题计数(因此它不再基于表)

如果您试图确保所有单选按钮至少有一个值,我会这样做:

var radio_names = ['question1','question2'];
var form_data = $('form').serializeArray();//Use a better selector by using an ID?
$.each(form_data,function(index,input){
    var radio_index = radio_names.indexOf(input.name)
    if(radio_index>-1 && input.value!='')//If it is a radio we monitor, and not empty of value
        radio_names.splice(radio_index, 1);//Remove it from the list, so we know which we are missing
});
if(radio_names.length>0)//We did not fill all radio, display list of unfilled ones
alert(radio_names);
现在用英文: 我们列出要监视的收音机,将表单序列化为一个数组,以便更容易使用。循环数组以检查其中的输入并删除找到的收音机。完成后,我们应该留下一个空的收音机列表…如果没有,大声警告用户。

检查此演示

我在第三个问题中有正确的名字问题3(是问题1)

我有insert类来查找表(on table class=“table”)和问题(class=“question”)

拨弄

谢谢。不幸的是,还有一些其他表格包含不同的内容。是的,这是一个打字错误。对不起,您可以通过向问题包装器添加一个类来替换表格计数,它会起作用:)我用不同的方式编辑了小提琴,没有修改标记,只使用jQuery.unique来获取问题的数量,哈I’我看起来很棒。非常感谢!非常有魅力。非常感谢!只剩下一件事:如何将序号添加到问题中?您可以将另一个类添加到数字中,然后使用$(“.noQuestion”)重试。否则,文本将更新此行未回答。推送($(question.prev().text()+question.text());我已更新了小提琴
<form method="post">
  <table cellspacing="0" cellpadding="0" border="0" width="100%">
    <tr>
      <td style="padding-left:20px; padding-right:20px">
        <table cellspacing="3" cellpadding="2" border="0" width="100%" class="table">
          <tr>
            <td valign="top">1.</td>
            <td valign="top" class="question" colspan="2">Question</td>
          </tr> 
          <tr>
            <td></td>
            <td width="5"><input value="question1_yes" name="question1" id="question1_yes" type="radio" /></td>
            <td><label for="question1_yes">Yes</label></td>
          </tr>
          <tr>
            <td></td>
            <td><input value="question1_no" name="question1" id="question1_no" type="radio" /></td>
            <td><label for="question1_no">No</label></td>
          </tr>
          <tr>
            <td></td>
            <td><input value="question1_dont_know" name="question1" id="question1_dont_know" type="radio" /></td>
            <td><label for="question1_dont_know">Don't know</label></td>
          </tr>
        </table>
      </td>
    </tr>
    <tr>
      <td style="padding-left:20px; padding-right:20px">
        <table cellspacing="3" cellpadding="2" border="0" width="100%" class="table">
          <tr>
            <td valign="top">2.</td>
            <td valign="top" class="question" colspan="2">Question</td>
          </tr>
          <tr>
            <td></td>
            <td width="5"><input value="question2_yes" name="question2" id="question2_yes" type="radio" /></td>
            <td><label for="question2_yes">Yes</label></td>
          </tr>
          <tr>
            <td></td>
            <td><input value="question2_no" name="question2" id="question2_no" type="radio" /></td>
            <td><label for="question2_no">No</label></td>
          </tr>
          <tr>
            <td></td>
            <td><input value="question2_dont_know" name="question2" id="question2_dont_know" type="radio" /></td>
            <td><label for="question2_dont_know">Don't know</label></td>
          </tr>
        </table>
      </td>
    </tr>
    <tr>
      <td style="padding-left:20px; padding-right:20px">
        <table cellspacing="3" cellpadding="2" border="0" width="100%" class="table">
          <tr>
            <td valign="top">3.</td>
            <td valign="top" class="question" colspan="2">Question</td>
          </tr>
          <tr>
            <td></td>
            <td width="5"><input value="question3_yes" name="question3" id="question3_yes" type="radio" /></td>
            <td><label for="question3_yes">Yes</label></td>
          </tr>
          <tr>
            <td></td>
            <td><input value="question3_no" name="question3" id="question3_no" type="radio" /></td>
            <td><label for="question3_no">No</label></td>
          </tr>
          <tr>
            <td></td>
            <td><input value="question3_dont_know" name="question3" id="question1_dont_know" type="radio" /></td>
            <td><label for="question3_dont_know">Don't know</label></td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
  <input type="submit">
</form>
$(document).on('submit', 'form', function () {

    var validate = true;
    var unanswered = new Array();

    // Loop through available sets
    $('.table').each(function () {
        // Question text
        var question = $(this).find(".question");
        // Validate
        if (!$(this).find('input').is(':checked')) {
            // Didn't validate ... dispaly alert or do something
            unanswered.push(question.text());
            question.css('color', 'red'); // Highlight unanswered question
            validate = false;
        }
    });

    if (unanswered.length > 0) {
        msg = "Please answer the following questions:\n" + unanswered.join('\n'); 
        alert(msg);
    }
    return validate;
});