检查是否未选中单选按钮jQuery

时间:2017-07-27 14:40:55

标签: javascript jquery validation radio-button

我有一个简单的表单,几乎没有不同的输入类型。基本上我正在检查text,textarea,datetime-local是否有一些值,并检查了所有radiobuttons。那是我正在使用的代码

$("#submit_button").click(function() {

  var alarm = 0;


  $('input[type="text"]').each(function() {
    if ($(this).val() == "") alarm = 1;
  })

  $('textarea').each(function() {
    if ($(this).val() == "") alarm = 1;
  })

  $('input[type="datetime-local"]').each(function() {
    if ($(this).val() == "") alarm = 1;
  })


  $('input[type="radio"]').each(function() {
    if (!$(this).is("checked")) alarm = 1;
  })

  if (alarm == 1) {
    $("#failure").show(200);
    $("#failure").fadeOut(1500);
  } else {
    $("#success").show(200);
    $("#success").fadeOut(1500);
  }
});
  #success,
#failure {
  display: none;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<label class="reshenie_radio"><input type="radio" class="reshenie_radio" name="reshenie" value="Пройден">1</label>
<label class="reshenie_radio"><input type="radio" class="reshenie_radio" name="reshenie" value="Не пройден">2</label>
<label class="reshenie_radio"><input type="radio" class="reshenie_radio" name="reshenie" value="Продлен">3</label>

<textarea rows="10" cols="100" name="recommendations" value=""></textarea>

<label style="text-align: center;"><input type="datetime-local" >Date</label>

<label><input type="text" class="avg_score" name="avg_score" width="30" height="50" value="">avg.score</label>


<section id="success">
  <p>Thanks! Everything is ok!</p>
</section>

<section id="failure">
  <p>Please fill all the fields!</p>
</section>

<section id="submit">
  <input type="submit" name="submit" id="submit_button" value="send!">
</section>

此代码检查所有字段,但无线电按钮检查无效。

3 个答案:

答案 0 :(得分:1)

你可以检查这样的无线电输入(不需要foreach循环):

if(!$('.reshenie_radio').is(':checked')) alarm = 1; 

答案 1 :(得分:0)

您的问题是您没有在:checked

中使用is('checked')选择器

还可以使用:checked选择器和length

if(!$('.reshenie_radio:checked').length){
   alarm = 1; 
}

您也可以使用filter()

组合所有其他人
var $emptyInputs = $('input[type="text"], textarea, input[type="datetime-local"]').filter(){
   return !this.value;
});

if($emptyInputs.length){
   alarm = 1;
} 

答案 2 :(得分:0)

请勿在此代码中添加.each()广播输入


通过你的代码,
您可以像这样进行输入检查,
https://jsfiddle.net/saifudazzlings/wa3n19hw/3/


只需删除.each()
并添加

if(!$('input[type="radio"]').is(":checked"))
    {
    alarm = 1;
    }