html
  • forms
  • radio-button
  • 2010-08-31 59 views 54 likes 
    54
    <label>Do you want to accept American Express?</label> 
    Yes 
    <input id="amex" style="width: 20px;" type='radio' name='Contact0_AmericanExpress' value='1' /> 
    No 
    <input style="width: 20px;" type='radio' name='Contact0_AmericanExpress' class='check' value='0' checked="checked" /> 
    

    单选按钮在默认情况下不会显示为checked。我开始没有默认的选择做一些非常简单的js验证,它不工作。所以我选择使用默认值,直到我发现并发现了一些奇怪的事情。单选按钮“选中”属性不起作用

    该标记是有效的,我试过FF,Safari和Chrome。什么都没有

    我认为这是与jQuery库冲突,因为当我删除调用脚本时问题消失。 http://jsfiddle.net/fY4F9/

    没有被默认选中:

    +2

    这里你的问题到底是什么?我将您的HTML复制到一个空文件中,并选中“否”按钮。这是IE8,FF和Opera。 – 2010-08-31 07:06:25

    +0

    看到下面的答案(类型的解决方法虽然) – Manglesh 2013-09-16 08:18:16

    回答

    3

    到刚才复制的代码。你有没有运行的JavaScript会影响收音机?

    +0

    我知道,这是疯了吧?没有,我没有任何脚本将地址单选按钮。只需对文本字段和滑块脚本进行验证即可。我正在通过它现在只是为了确保虽然.. – Jordan 2010-08-31 07:19:38

    +0

    找到罪魁祸首,但我不知道究竟是什么在该脚本造成的问题 – Jordan 2010-08-31 07:29:57

    +0

    也尝试在清除缓存的浏览器。以防万一 – 2010-08-31 07:29:57

    -2

    您使用非标准的XHTML代码

    (值应该用双引号,而不是单引号被陷害)试试这个:

    <form> 
        <label>Do you want to accept American Express?</label> 
        Yes<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" /> 
        No<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked="checked" /> 
    </form> 
    
    +0

    冲突,这是根据约旦的文档类型。不管它是否仍然在xhtml文档类型中工作;但它不会验证。 – 2010-08-31 07:10:57

    +0

    我改变它只是踢,但我知道这不是问题。验证是很好的,但它不会解决这个问题。 – Jordan 2010-08-31 07:16:28

    +5

    @CFP实际上,符合标准的XHTML(过渡,严格,HTML5等)允许使用双引号或单引号。请参阅:http://dev.w3.org/html5/html-author/#double-quote-attr – matthewpavkov 2011-11-18 14:25:27

    0

    你的代码是正确的,尝试调试您的JQuery脚本来找到问题! 如果你使用FF,你可以安装一个扩展来调试JS(和JQuery),它被称为FireBug。

    65

    如果您使用checked属性具有多个相同的名称,它将采用页面上最后一次选中的广播。

    <form> 
    <label>Do you want to accept American Express?</label> 
    Yes<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" /> 
    maybe<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" checked="checked" /> 
    No<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked="checked" /> 
    </form> 
    
    +3

    它实际上会检查'

    '中的最后一个电台。只要它们属于不同的形式,您可以有多个具有相同名称的已检查输入。 – 2014-05-20 16:52:21

    +0

    这是我的情况。该页面有两个div,每次只显示其中一个div。两人都有一个同名的单选按钮组。在我的例子中,两者都具有checked属性,但浏览器似乎选择隐藏div(后者在HTML中)作为用于显示所选单选按钮的一个。 – 2016-12-07 18:50:11

    +0

    @BrunoLange这是我的问题。我在页面上呈现了同一个HTML的多个实例 - 这个实例由两个单选按钮组成,这两个单选按钮不包含在表单标签中,其中一个单选按钮具有'checked'属性。我必须将它们包装在每个实例的''标记中,以检查默认单选按钮。 – 2017-05-22 15:48:42

    5

    嘿,我也面临着类似的问题,在Ajax生成的页面。我使用了在Webdeveloper FF撑着生成的源代码,并在形式检查了所有的投入和发现,有一个内部的另一个复选框隐藏div(显示:无)与相同的ID,一旦我改变了第二复选框的ID,它开始工作..你也可以尝试..并让我知道结果..干杯

    1

    嗨我想如果你为第二个输入添加id属性并赋予它一个唯一的id值它将起作用

    <label>Do you want to accept American Express?</label> 
    Yes<input id="amex" style="width: 20px;" type='radio' name='Contact0_AmericanExpress' value='1'/> 
    No<input style="width: 20px;" id="amex0" type='radio' name='Contact0_AmericanExpress' class='check' value='0' checked="checked"/> 
    
    11

    最终JavaScript解决这个恼人的问题 -

    只需将jQuery命令包装在setTimeout。间隔可以非常小,我使用10毫秒,它似乎工作得很好。延迟非常小,对于最终用户来说几乎不可检测。

    setTimeout(function(){ 
        $("#radio-element").attr('checked','checked'); 
    },10); 
    

    这也将与

    • $("#radio-element").trigger('click');
    • $("#radio-element").attr('checked',true);
    • $("#radio-element").attr('checked',ANYTHING_THAT_IS_NOT_FALSE);

    哈克工作... ...哈克哈克... ...哈克是我知道......因此这是一种解决方法....

    +0

    看起来你在第一个例子中的所有#radio元素上都设置了'Checked'属性。 – etoxin 2013-01-09 03:58:05

    +0

    等我坏。没有读过OP的问题。 – etoxin 2013-01-09 03:59:10

    +0

    This works too'$(input).prop('checked',true);' – Atif 2015-06-27 23:47:05

    27

    这可能是它:

    Is there a bug with radio buttons in jQuery 1.9.1?

    总之:不要使用ATTR(),但道具()检查单选按钮。上帝我讨厌JS ...

    +5

    这可能没有回答OP的问题,但它回答了我的 – 2014-03-25 23:16:34

    +8

    :-(你讨厌JS – Daan 2015-10-26 14:24:55

    +0

    昨天刚刚发现了同样的问题 – 2016-03-08 14:14:08

    -1

    只是增加检查属性,你想拥有默认选中

    试试这个每个无线电:

    <input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked/> 
    
    0

    这里是经过房产详细解释VS属性enter link description here

    ,这可能有帮助的人,这是另一种方式来获取选定的单选按钮值

    var accepted = $('input[name="Contact0_AmericanExpress"]:checked').val(); 
    

    此处设置ID为单选按钮是可选的。

    编程快乐!....

    6

    无线输入必须是“检查”工作表单内。

    相关问题