单击在c#

时间:2019-02-27 07:52:47

标签: c# jquery asp.net

我想检查TextBox是否被禁用。

如果我们尝试单击禁用的TextBox。它应该显示一条警报消息。

这是我的源代码为http://jsfiddle.net/Alfie/2kwKc/的代码,但在我的情况下不起作用。

MasterPage.master 上:

<asp: ContentPlaceHolder ID="head" runat="server">
</asp: ContentPlaceHolder > 
<script type="text/javascript"> 
    $("#txDateRet").click(function () {
        if (this.readOnly) {
        alert("The textbox is clicked.");
    }
}); 
</script> 
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>

标记 Default.aspx网页上:

<asp:TextBox ID="txDateRet" runat="server" 
    ReadOnly="true" BackColor="Yellow" 
    Width="300" CssClass="toUpper"
    Enabled="false"></asp:TextBox>

#Update#1

    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>

    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#txDateRet").click(function () {
                if ($(this).attr("readonly") == "readonly") {
                    alert($(this).attr("readonly"));
                }
            });
        });

    </script>


<asp:TextBox ID="txDateRet" 
     ClientIDMode="Static" 
     runat="server" 
     ReadOnly="true" 
     BackColor="Yellow" 
     Width="300" 
     CssClass="toUpper"
     Enabled="false">
</asp:TextBox>

#Update#2

$(document).ready(function () {

            $("#txDateRet").click(function () { 
                alert($(this).attr("readonly"));


    });
});

#Update#3

<div class="pure-g">
    <div class="pure-u-1 pure-u-md-1-3">
            <input name="ctl00$ContentPlaceHolder1$txDateRet" 
             type="text" value="26/02/2019" 
             readonly="readonly" 
             id="txDateRet" 
             class="toUpper" 
             style="background-color:Yellow;width:300px;" />           
    </div>
</div>

2 个答案:

答案 0 :(得分:0)

我认为在webform中,我们提供带有内容占位符的textbox的完整ID。 你可以试试看。

$("#head_txDateRet").click(function () {
   if (this.readOnly) {
      alert("The textbox is clicked.");
    }
});

答案 1 :(得分:0)

可能有三个原因:
1-因为该代码是在加载JQuery库之前呈现的,所以将该脚本放在触发click事件之前。

2-由于该元素是占位符,而ASP.Net元素在占位符中,因此它可能会获得不同的ID,您可以通过检查该ID来看到它。

完全更改代码,例如:

<asp: ContentPlaceHolder ID="head" runat="server">
</asp: ContentPlaceHolder > 
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript"> 
$(document).ready(function () {
    $("#txDateRet").click(function () {
        if (this.readOnly) {
        alert("The textbox is clicked.");
    }
   });
}); 
</script> 

<asp:TextBox ID="txDateRet" ClientIDMode = "static" runat="server" 
    ReadOnly="true" BackColor="Yellow" 
    Width="300" CssClass="toUpper"
    Enabled="false"></asp:TextBox>

3-否则readonly道具在渲染后不会得到true可能会得到readonly="readonly",因此if (this.readOnly)将不起作用,应将其更改为{{1 }}。

希望这个答案为您提供线索。