簡體   English   中英

單選按鈕“已檢查”屬性不起作用

[英]Radio Buttons “Checked” Attribute Not Working

默認情況下,單選按鈕不會顯示為checked 我開始時沒有默認選擇,做了一些非常簡單的 js 驗證,但它不起作用。 所以我選擇只使用默認值,直到我弄清楚並發現發生了一些奇怪的事情。

標記是有效的,我已經在 FF、Safari 和 Chrome 中嘗試過。 什么都行不通。

我認為這與jQuery庫有沖突,因為當我刪除調用腳本時問題就消失了。

 <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" />

如果您有多個同名的 check 屬性,它將采用頁面上最后一個選中的收音機。

 <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>

這可能是:

jQuery 1.9.1 中的單選按鈕是否存在錯誤?

簡而言之:不要使用 attr() 而是使用 prop() 來檢查單選按鈕。 天啊,我討厭JS...

無線電輸入必須在表格內,“檢查”才能工作。

解決這個煩人問題的最終 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);

Hacky...hacky...hacky...hacky...是的,我知道...因此這是一個解決方法....

嘿,我也遇到了類似的問題,在 ajax 生成的頁面中.. 我在 FF 中使用 Webdeveloper 插件獲取了生成的源代碼,並檢查了表單中的所有輸入,發現隱藏的 div(display:none) 中有另一個復選框使用相同的 ID,一旦我更改了第二個復選框的 ID,它就開始工作了.. 你也可以試試.. 讓我知道結果.. 歡呼

剛剛將您的代碼復制到: http : //jsfiddle.net/fY4F9/

否默認選中。 您是否正在運行任何會影響單選框的 javascript?

jQuery 文檔提供了關於checked屬性與屬性的詳細解釋

因此,這是另一種檢索選定單選按鈕值的方法

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

 **Radio button aria-checked: true or false one at a time** $('input:radio[name=anynameofinput]').change(function() { if (this.value === 'value1') { $("#id1").attr("aria-checked","true"); $("#id2").attr("aria-checked","false"); } else if (this.value === 'value2') {; $("#id2").attr("aria-checked","true"); $("#id1").attr("aria-checked","false"); } });

我可以通過為兩組輸入設置相同的input標簽名稱來重現這一點,如下所示:

<body>
  <div>
      <div>
        <h3>Header1</h3>
      </div>
      <div>
          <input type="radio" name="gender" id="male_1" value="male"> Male<br>
          <input type="radio" name="gender" id="female_1" value="female" checked="checked"> Female<br>
          <input type="submit" value="Submit">
      </div>
  </div>


  <div>
      <div>
        <h3>Header2</h3>
      </div>
      <div>
          <input type="radio" name="gender" id="male_2" value="male"> Male<br>
          <input type="radio" name="gender" id="female_2" value="female" checked="checked"> Female<br>
          <input type="submit" value="Submit">
      </div>
  </div>
</body>

(要查看運行情況,請單擊 此處

以下兩種解決方案都可以解決問題:

  1. 為第二組中的輸入使用不同的名稱
  2. 對其中一個組使用form標簽而不是div標簽(無法真正弄清楚為什么這會解決問題的真正原因。很想聽聽對此的一些意見!)

也試試這個方法

$('input:radio[name="name"][id="abcd'+no+'"]').attr("checked", "checked");

如果有<form />標簽那么("checked", true)否則("checked", "checked")

嗨,我想如果你為第二個輸入設置 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"/>

您的代碼是正確的,嘗試調試您的 JQuery 腳本以查找問題! 如果您使用 FF,您可以安裝一個擴展來調試 JS(和 JQuery),它被稱為 FireBug。

只需為您希望默認選中的每個收音機添加已選中的屬性

試試這個:

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

您使用的是非標准的 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>

checked="checked"替換為checked={true} 或者您甚至可以將其縮短為僅checked

這是因為被checked prop 的期望值類型是一個布爾值。 不是字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM