jQuery形式的radio输入

Posted

技术标签:

【中文标题】jQuery形式的radio输入【英文标题】:JQuery form of radio input 【发布时间】:2016-10-17 06:02:24 【问题描述】:

我正在尝试制作一种简单形式的无线电输入,最多可以选择 1 个:

<form id='forma' action='predmeti.php' method='GET'>
        1:<input type='radio' name='godina' value='1'/>
        2:<input type='radio' name='godina' value='2'/>
        3:<input type='radio' name='godina' value='3'/>
        <input type='button' id='ok' value='Izaberi godinu!'>
</form>

如何仅在选择了一个时才允许表单提交,如果没有选择则阻止提交?通过单击 id='ok' 按钮提交表单。

【问题讨论】:

勾选后是否自动提交?或者您需要仅在选中一项时才允许提交? @MinaJacob 不是自动的,但是当按下按钮 id='ok' 时,必须选择其中一个收音机 【参考方案1】:

根据评论更新。请试试这个。

$(document).ready(function() 
       $('#ok').on('click', function()
        if($("#forma input[type='radio']:checked").length == 1)
            $(this).closest("form").submit();
        
       );
    );

【讨论】:

不是点击收音机,而是点击收音机下方的按钮,id='ok'的按钮 根据评论更新了答案。请检查。【参考方案2】:

为其中一个单选按钮添加必需的属性,这是一个示例http://codepen.io/mozzi/pen/zBBzxo?editors=1010

<form id='forma' action='predmeti.php' method='GET'>
        1:<input type='radio' name='godina' value='1' required></input>
        2:<input type='radio' name='godina' value='2'></input>
        3:<input type='radio' name='godina' value='3'></input>
        <input type="submit" value="send">
</form>

【讨论】:

谢谢,但是有没有办法做到这一点,而不会使收音机被圈起来并显示警报?我已经想到应该发生什么 当有人点击提交但没有任何检查时,您想到的场景是什么?应该怎么办? 我有一个跨度设置为display: none;它更改为display: inline【参考方案3】:

如果选中[name=godina] 元素之一,您可以使用event.preventDefault().is() 和参数:checked 来阻止默认操作以提交form

$("input[type=button]").click(function(e) 
  e.preventDefault();
  if ($("[name=godina]").is(":checked")) this.parentElement.submit()
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<form id='forma' action='' method='GET'>
        1:<input type='radio' name='godina' value='1'/>
        2:<input type='radio' name='godina' value='2'/>
        3:<input type='radio' name='godina' value='3'/>
        <input type='button' id='ok' value='Izaberi godinu!'>
</form>

【讨论】:

【参考方案4】:

检查这个更新的链接http://codepen.io/mozzi/pen/zBBzxo?editors=1010它应该做你想做的事

<form id='forma' action='predmeti.php' method='GET'>
  1:<input type='radio' name='godina' value='1' required></input>
  2:<input type='radio' name='godina' value='2'></input>
  3:<input type='radio' name='godina' value='3'></input>

  <span id="msg" style="display: none">hello world </span>
  <input type='button' id='ok' value='Izaberi godinu!'>
</form>

$('#ok').on('click', function() 
  if ($('input[type=radio]:checked').length > 0) 
    $('#msg').css('display', 'none');
   else 
    $('#msg').css('display', 'inline');
  

);

【讨论】:

以上是关于jQuery形式的radio输入的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 收音机输入 .on('change') 触发了两次

jquery重置表单

jQuery焦点文本字段检查单选按钮

如何使用jQuery wrap()包装动态创建的元素?

jQuery向后选择

jquery获取radio值求教