2012-05-29 57 views
0

我有下一個C#代碼(工作):結合ASP:直放站和JQuery

// Write data into the checkboxes 
    RepeaterVocabularyWords.DataSource = new[] { correctWord1, correctWord2, incorrectWord1, incorrectWord2 }; 
    RepeaterVocabularyWords.DataBind(); 

    // Get data from the checkboxes 
    protected void ButtonAccept_Click(object sender, EventArgs e) 
    { 
        foreach (RepeaterItem item in RepeaterVocabularyWords.Items) 
     { 
      if (item.ItemType == ListItemType.Item 
       || item.ItemType == ListItemType.AlternatingItem) 
      { 
       CheckBox CheckBoxVocabularyWord = (CheckBox)item.FindControl("CheckBoxVocabularyWord"); 
       if (CheckBoxVocabularyWord.Checked) 
       { 
       } 
      } 
     } 

並與jQuery代碼的下一個ASP(工作):

$(document).ready(function() { 
    $("input[id$='ButtonAccept']").click(function (e) { 
     if ($('span.storeCheck input:checked').length != 2) { 
      alert("You have to choose only the 2 words that means the same!"); 
      e.preventDefault(); 
} 

然後,如果我寫行「跨度類=」 storeCheck「..」,上述中繼器代碼的工作,但不是上述C#代碼:

<asp:Repeater ID="RepeaterVocabularyWords" runat="server" OnItemCommand="Repeater1_ItemCommand"> 
    <ItemTemplate>    
     <<span class="storeCheck"><input runat="server" type="checkbox" ID="CheckBoxVocabularyWord" title="<%# Container.DataItem %>" /></span> 
    </ItemTemplate> 
</asp:Repeater> 

在相反,如果我寫「ASP:複選框ID =「..」,上面的c#代碼工作,但不是jQuery的東西。

<asp:Repeater ID="RepeaterVocabularyWords" runat="server" OnItemCommand="Repeater1_ItemCommand"> 
    <ItemTemplate> 
     <asp:CheckBox ID="CheckBoxVocabularyWord" runat="server" Text="<%# Container.DataItem %>" />  
    </ItemTemplate> 
</asp:Repeater> 

我怎麼能使兩個工作?

回答

0

雷的方法我認爲會起作用,但這是我最後做的。

jQuery的代碼如下:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("input[id$='ButtonAccept']").click(function (e) { 
      if ($('span.storeCheck input:checked').length != 2) { 
       alert("You have to choose only the 2 words that means the same!"); 
       e.preventDefault(); 
      } 
     }); 
    }); 
</script> 

和轉發是:

<asp:Repeater ID="RepeaterVocabularyWords" runat="server" OnItemCommand="RepeaterVocabularyWords_ItemCommand"> 
    <ItemTemplate> 
     <span class="storeCheck"> 
      <asp:CheckBox ID="CheckBoxVocabularyWord" Font-Size="0px" runat="server" Text="<%# Container.DataItem %>" 
       ClientIDMode="Static" CssClass="{labelOn: '<%# Container.DataItem %>', labelOff: '<%# Container.DataItem %>', easing: 'easeOutBounce', duration: 500}" /> 
     </span> 
    </ItemTemplate> 
</asp:Repeater> 

我正在寫一個遊戲。我會把鏈接放在這裏,如果我最後上傳它的地方:)

0

當您使用<input type='checkbox' runat='server'>時,您會收到HtmlInputCheckBox而不是CheckBox。改變你的C#代碼來使用適當的類,看看是否有幫助。通過保持ASP複選框

$(document).ready(function() { 
    $("input[id$='ButtonAccept']").click(function (e) { 
     if ($('span.storeCheck').find('input:checked').length != 2) { 
      alert("You have to choose only the 2 words that means the same!"); 
      e.preventDefault(); 
} 

+0

感謝您的回答。獲取數據可能會起作用,但我仍然不知道如何將數據寫入複選框。 – chelder

+0

我不明白 - 你想要寫入複選框的數據是什麼? – Ray

+0

我的錯誤。獲得更多經驗後再次閱讀我認爲您的想法可能會奏效。無論如何,我遵循其他aproach:我修改了asp代碼,而不是c#之一。我現在要發佈它。 – chelder

0

試試這個。

+0

謝謝你的回答:) 但它不能正常工作。無論檢查多少個複選框,條件始終爲真。 – chelder