0

我有下一个 C# 代码(有效):

    // 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();
}

然后,如果我写“span class="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:CheckBox 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>

我怎样才能使两者都起作用?

4

3 回答 3

0

当你使用时<input type='checkbox' runat='server'>,你得到的是一个HtmlInputCheckBox,而不是一个CheckBox。更改您的 c# 代码以使用正确的类,看看是否有帮助。

于 2012-05-29T11:28:02.120 回答
0

试试这个:

$(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();
}

通过保留 asp 复选框。

于 2012-05-29T11:49:30.643 回答
0

我认为 Ray 的方法会奏效,但这是我最终所做的。

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>

我正在写游戏。如果我最终将其上传到某个地方,我会将链接放在这里:)

于 2012-05-30T15:00:37.103 回答