1

好的,这让我大吃一惊,因为我已经分别使用了这些代码,而且非常成功,但是当我把它们放在一起时,它们就不起作用了。我将解释我正在尝试做的事情,尽管当您看到下面的代码时,它可能是不言自明的。

我试图简单地确保一次只能检查一个 HTML 表单的两个复选框中的一个。(不能使用单选按钮,因为这两个框都不能被选中的选项必须可用)。

无论如何,这里是代码(请假设输入字段的 id 是准确的,它们是“sIsGangMember”和“sIsNotGangMember”

$("#sIsGangMember").change(function () {

    if ($("#sIsGangMember").is(':checked')) {
        document.getElementById("sIsNotGangMember").checked = false;
    }
});

$("#sIsNotGangMember").change(function () {

    if ($("#sIsNotGangMember").is(':checked')) {
        document.getElementById("sIsGangMember").checked = false;
    }
});

如果这是一些愚蠢的事情,我真的很抱歉,但我知道我之前已经分别使用过这段代码的所有部分并且一切都很好,但我根本看不出它有什么问题,也看不出 HTML 部分有什么问题:

<tr>
    <td class="lineupColor2">
        Search For Street<br/>Gang Member
    </td>
    <td class="lineupColor2">
        <label for="sIsGangMember">Is Gang Member</label>
        <br/>
        <input type="checkbox" id="sIsGangMember" name="sIsGangMember" 
            style="margin-left: 115px;" value="ticked" @IsGangMemberTicked/>
    </td>
    <td class="lineupColor2"> 
        <label for="sIsNotGangMember">Is Not Gang Member</label>
        <br/>
        <input type="checkbox" id="sIsNotGangMember" name="sIsNotGangMember"
            style="margin-left: 115px;" value="ticked" @IsNotGangMemberTicked/>
    </td>
    <td class="lineupColor2">
         <button type="button" style="cursor: pointer;" 
             onclick="clearIsGangMembers()">Clear Fields
         </button>
    </td>
    <td class="lineupColor2">
    </td>
</tr>

您看到的 razor (C#) 只是一个不包含任何内容或包含字符串“checked='checked'”的值,以便表单记住它们是否被检查以进行进一步搜索或是否发生错误以及表格未提交等

分配 C# 变量的部分是:

    //////////////////////////////////////////////////////////////////////////////////////////
    if(IsGangMember=="ticked"){IsGangMemberTicked="checked='checked'";}///////////////////////
    if(IsNotGangMember=="ticked"){IsNotGangMemberTicked="checked='checked'";}/////////////////
    //////////////////////////////////////////////////////////////////////////////////////////

无论如何,感谢您的帮助!

感谢大家的帮助,但是谁能告诉我“为什么”这不起作用?

更新:

好的, .click 也不起作用......显然这里还有其他事情发生......

4

2 回答 2

0

您将需要使用 click 或 mousedown 而不是 change 事件。

jQuery复选框更改和单击事件

前任。http://jsfiddle.net/qn8Kh/2/

有关为什么会这样的更多信息: jQuery difference between change and click event of checkbox

于 2012-10-03T15:23:37.810 回答
0

好的,我非常感谢您的帮助,并且不知何故(经过数小时的搜索和研究可能出现的问题)我知道这将是一件愚蠢的事情。

事实是,以这种方式使用 .change 并没有错。

我的问题是我不小心把函数放在了:

$("#sIsGangMember").change(function () {

if ($("#sIsGangMember").is(':checked')) {
    document.getElementById("sIsNotGangMember").checked = false;
}
});

$("#sIsNotGangMember").change(function () {

if ($("#sIsNotGangMember").is(':checked')) {
    document.getElementById("sIsGangMember").checked = false;
}
});

全部在 js 文件中(例如,不包含在 (document).ready 或 jQuery(function) 或任何东西中......

那太蹩脚了,是的,我知道 xD 很抱歉,谢谢大家的帮助!

于 2012-10-03T17:02:55.137 回答