2014-11-06 71 views
1

所以當複選框沒有得到遏制,我有這個奇怪的IE10,臭蟲(IE11正常工作):jQuery的Fancyform和IE10:標籤上點擊

我有一個複選框,這樣的:

<div class="select-row row-b"> 
    <p>some text</p> 
    <label><input type="checkbox" name="checkboxGroupA" data-index="1" value="A1"/>A1</label> 
</div> 

使用Fancyform -jQuery-插件版本1.4.2,它似乎有一個爲IE10在Fancyform了一個錯誤:

所以假裝這是我的複選框(有點風格):[A1] 點擊邊框內的某處(內[ ])的作品。複選框被選中。但直接點擊文本(標籤,「A1」)不起作用,複選框狀態不會從未選中更改爲已選中狀態。

我添加了一個console.log(「...」);以fancyform transformCheckbox方法在這裏:

check: function() { 
       console.log("setting check"); 
       method.setProp(this, "checked", 1); 
      }, 

只顯示我一樣。當我點擊標籤時,「檢查​​」不會被觸發。

在這裏得到一些提示是件好事,因爲我現在不在意了。

最好的問候, 大教堂

+0

你提到IE10和IE11,但沒有其他瀏覽器。你是說IE10是唯一的問題,或...? – nnnnnn 2014-11-06 13:48:37

+0

您可能需要爲'checkbox'添加'id'屬性並將'for'屬性添加到'label'並將它們設置爲相同的值 – 2014-11-06 13:49:00

+0

@LoganMurphy - 如果輸入位於標籤內部,則不需要至少不是標準標籤行爲(我不知道Fancyform對它做了什麼)。 – nnnnnn 2014-11-06 13:50:16

回答

2

我有同樣的問題,在這種情況下,你需要的情況下,因爲IE版本綁定。

$(".select-row row-b label").bind('click',function(){ 
    $('input',this).attr("checked",true); 
}) 

編輯:這是我工作的代碼,在此基礎上的答案。我在這裏編輯此代碼,因爲有幾個副作用,你必須照顧:

this.$rowLbls = $(this.$el.find('.row-alter label')); //might be $('yourdomelement', 'yoursecond...'') 
     this.$rowLbls.click(function(event) { 
      var ele = $(this).find('input'); 
      if($(event.target).is("label")) { //check exactly for label, because fired twice if not => would work just once 
       if(ele.is(':checked')){ 
        ele.prop('checked', false); //prop instead of attr for true/false 
       } else{ 
        ele.prop('checked', true); 
       } 
      } 
     }); 
+0

是否將此添加到transformCheckbox函數(尤其是「check:...」 - part)還是whereelse? – Dominik 2014-11-06 14:37:34

+0

我確實把它放在我的腳本中,與變換複選框一起工作。你可以打電話給那裏的「支票:功能」 – vcrzy 2014-11-06 15:06:12

+0

只是在你的幫助下完成了工作(只需添加true/false-condition,prop而不是attr等)謝謝:) – Dominik 2014-11-07 11:36:35