为什么这个选择器不起作用(Jquery和Asp.net)

时间:2013-08-05 09:41:16

标签: javascript jquery asp.net

我有一个asp.net应用程序。在Default.aspx文件中,我有这段代码。

<asp:Content ContentPlaceHolderID="PlaceHolderMain" runat="server">

    <div id="chrome_ctrl_placeholder"></div>
    <div>
        <asp:CheckBox ID ="aspTech" runat="server" /><br />
        <asp:TextBox ID="txtText" runat="server"></asp:TextBox><br />
        <input type="checkbox" name="checkBox" runat="server" value="Technical" id="Technical" /> Technical<br />
        <input type="checkbox" name="checkBox" runat="server" value="Commercial" id="Commercial"/> Commercial<br />
        <input type="checkbox" name="checkBox" runat="server" value="HR" id="HR"/>  HR <br />
        <%--<li><input type="button" runat="server" value="Save" id="btnSave" /></li>--%>

        <button id="btnSave" >Save</button> 
        <button id="btnChecked" >Checked</button> 
        <button id="btnText">Text</button>
    </div>

在App.js文件中我有这段代码。

$(document).ready(function () {

$("#btnChecked").click(function () {
    alert("Checking");

    if ($("#Technical").checked == true) {
        alert("Tech Checked");
    }
    else
    {
        alert("Tech Not Checked");
    }
});
})

还有一些代码,但它不相关。

当我运行代码时,它构建得很好,当我点击btnChecked按钮时它会提示“正在检查”,但是如果选中了ID为“技术”的复选框,则它永远不会启动,它始终会提示“未检查技术” 。那么正确的代码是什么来检查是否已经检查了ASP复选框(带有id aspTech)?

3 个答案:

答案 0 :(得分:2)

$("#Technical")返回一个jQuery对象,而不是DOM元素。 checked属性适用于DOM元素,而不适用于jQuery对象。

使用jQuery等价物:

if ($("#Technical").is(":checked")) {
}

或者访问jQuery对象包装的DOM元素:

if ($("#Technical")[0].checked) {
}

答案 1 :(得分:1)

尝试使用is方法:

$("#Technical").is(':checked')

prop

$("#Technical").prop('checked') === true

答案 2 :(得分:1)

当您在jQuery代码中检查服务器端控件时,应该使用它ClientID来引用控件。

试试这个:

$(document).ready(function () {

$("#<%=btnChecked.ClientID%>").click(function () {
    alert("Checking");

    if ($("#<%=Technical.ClientID%>").checked == true) {
        alert("Tech Checked");
    }
    else
    {
        alert("Tech Not Checked");
    }
});
})