2017-07-27 138 views
0

我有一个简单的表单,几乎不同的输入类型。基本上我在检查text,textarea,datetime-local是否有一些值,并检查了所有的单选按钮。这是代码我使用检查单选按钮是否被选中jQuery

$("#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>

此代码检查所有字段罚款,但单选按钮检查不工作。

+0

你的例子似乎工作,虽然 – Luca

+0

你通过你的单选按钮循环和警报的最终值仅由最后一个单选按钮的状态决定。另外,你不能检查所有的单选按钮。 – j08691

+1

不应该是'$(this).is(“:checked”)'? – NullDev

回答

1

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

if(!$('.reshenie_radio').is(':checked')) alarm = 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; 
} 
0

无线电输入验证码


不要添加.each()通过采取你的代码,
你可以做输入检查只是这样,
https://jsfiddle.net/saifudazzlings/wa3n19hw/3/


只是删除.each()
并添加

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