使用JavaScript和ASP.NET启用和禁用按钮

12

我正在检查数据库中是否存在用户,如果存在,我会显示“已存在的用户”消息,然后需要禁用注册按钮;如果不存在,则需要启用它。

我无法启用和禁用注册按钮。

有人可以帮我解决这个问题吗?

以下是我的代码:

 <script type="text/javascript">
     $(function () {
         $("#<% =btnavailable.ClientID %>").click(function () {
             if ($("#<% =txtUserName.ClientID %>").val() == "") {
                 $("#<% =txtUserName.ClientID %>").removeClass().addClass('notavailablecss').text('Required field cannot be blank').fadeIn("slow");

             } else {
                 $("#<% =txtUserName.ClientID %>").removeClass().addClass('messagebox').text('Checking...').fadeIn("slow");
                 $.post("LoginHandler.ashx", { uname: $("#<% =txtUserName.ClientID %>").val() }, function (result) {
                     if (result == "1") {
                         $("#<% =txtUserName.ClientID %>").addClass('notavailablecss').fadeTo(900, 1);
                       document.getElementById(#<% =btnSignUp.ClientID %>').enabled = false;
                     }
                     else if (result == "0") {
                         $("#<% =txtUserName.ClientID %>").addClass('availablecss').fadeTo(900, 1);
                        document.getElementById('#<% =btnSignUp.ClientID %>').enabled = true;
                     }
                     else {
                         $("#<% =txtUserName.ClientID %>").addClass('notavailablecss').fadeTo(900, 1);
                     }
                 });
             }
         });

         $("#<% =btnavailable.ClientID %>").ajaxError(function (event, request, settings, error) {
             alert("Error requesting page " + settings.url + " Error:" + error);
         });
     });
</script>

你的问题是什么?现在有人能帮助你吗? - Max
我的问题是无法禁用和启用注册按钮。如果用户名已存在,我需要将其禁用,如果不存在,则需要启用它。 - coder
9个回答

11

很不幸你的问题可能只是一个很小的差别,就是“enabled”和“disabled”之间的区别。

应该这样写:

.disabled = false;


是的,我已经按照上面所示完成了这个操作,但当用户可用并且我点击注册按钮时,它会刷新页面。 - coder
我看到你正在使用 POST,所以我猜你的按钮事件处理程序中只是缺少了 event.preventDefault() - cillierscharl
将提交单击处理程序添加到您的原始帖子中。 - cillierscharl

10
你可以尝试一下这个:

你可以玩弄它:

$('#ButtonId').prop("disabled", true); ->> disabled
$('#ButtonId').prop("disabled", false); ->> Enabled

尽管我也很喜欢jQuery,但我认为OP没有使用它。 - cillierscharl
抱歉,习惯性一瞥标签 ;) - cillierscharl

8
尝试这个...
document.getElementById('<%= button.ClientID %>').disabled = true;

或者

document.getElementById('<%= button.ClientID %>').disabled = false;

是的,我尝试了与上面代码中提到的相同的事情,但没有起作用。 - coder
我尝试将一个“var”设置为这个值,然后设置“disabled”,但是什么也没有发生。当我使用上面的代码时,一切都正常工作。我相信这与“var”变量不被理解为按钮有关,而上面的代码仍然被理解为按钮。 - Lord nick

7

JavaScript:

 function Enable() {
      $("#btnSave").attr('disabled', false);                
    }
 function Disable() {
       $("#btnSave").attr('disabled', true);
    }  

ASPX页面:

 <asp:Button runat="server" ID="btnSave" Text="Save" UseSubmitBehavior="false" OnClientClick="if(Page_ClientValidate('Validation')){javascript:Disable();}" ValidationGroup="Validation"/>

代码后台:

ScriptManager.RegisterStartupScript(Me, Me.GetType(), "Disable", "javascript:Disable();", True)

2

您可以将按钮的“visibility”属性设置为false,即visibility="false"


是的,我也做过那个,但当用户点击“显示可用性”时,如果用户存在于数据库中,则需要启用“注册”按钮,但这并没有发生。 - coder
为了实现这个,你需要使用一些条件语句,以及在C#代码中使用buttonName.visibility=true或false。 - Prakash Kumar Jha

1
.disabled是有效的,你是否使用断点确保代码被执行?你的条件if/else可能没有返回预期的值。

1
我做这个:

禁用:

    var myButton = document.getElementById('<%= this.myButton.ClientID %>');
    $(myButton).attr('disabled', 'disabled');  

启用:

    $(myButton).removeAttr('disabled');

0

使用 JavaScript 启用和禁用按钮,应该做以下操作 -

例:

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="a(); return false;"/>
<asp:Button ID="Button2" runat="server" Text="Button" OnClientClick="b(); return false;" />

并且

<script type="text/javascript">
   function a() {
       alert('1');
       document.getElementById('<%=Button1.ClientID %>').disabled = true;
       document.getElementById('<%=Button2.ClientID %>').disabled = false;
      }
   function b() {
       alert('2');
       document.getElementById('<%=Button2.ClientID %>').disabled = true;
       document.getElementById('<%=Button1.ClientID %>').disabled = false;
      }
 </script>

注意:虽然其他帖子有类似的代码,但它们因为页面重新加载而失败。因此,为了避免重新加载,应该添加一个return false,例如:OnClientClick="a(); return false;"


0

这段 JavaScript 代码应该可以工作。

document.getElementById("<%=btnSignUp.ClientID%>").disabled = true; //To disable the button

document.getElementById("<%=btnSignUp.ClientID%>").disabled = false;//To enable the button

你的代码应该长这样。
<script type="text/javascript">
     $(function () {
         $("#<% =btnavailable.ClientID %>").click(function () {
             if ($("#<% =txtUserName.ClientID %>").val() == "") {
                 $("#<% =txtUserName.ClientID %>").removeClass().addClass('notavailablecss').text('Required field cannot be blank').fadeIn("slow");

             } else {
                 $("#<% =txtUserName.ClientID %>").removeClass().addClass('messagebox').text('Checking...').fadeIn("slow");
                 $.post("LoginHandler.ashx", { uname: $("#<% =txtUserName.ClientID %>").val() }, function (result) {
                     if (result == "1") {
                         $("#<% =txtUserName.ClientID %>").addClass('notavailablecss').fadeTo(900, 1);
                       document.getElementById("<%=btnSignUp.ClientID%>").disabled = true;
                     }
                     else if (result == "0") {
                         $("#<% =txtUserName.ClientID %>").addClass('availablecss').fadeTo(900, 1);
                        document.getElementById("<%=btnSignUp.ClientID%>").disabled = false;
                     }
                     else {
                         $("#<% =txtUserName.ClientID %>").addClass('notavailablecss').fadeTo(900, 1);
                     }
                 });
             }
         });

         $("#<% =btnavailable.ClientID %>").ajaxError(function (event, request, settings, error) {
             alert("Error requesting page " + settings.url + " Error:" + error);
         });
     });
</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接