Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何防止按钮文本更改?_Asp.net_Vb.net - Fatal编程技术网

Asp.net 如何防止按钮文本更改?

Asp.net 如何防止按钮文本更改?,asp.net,vb.net,Asp.net,Vb.net,我有两个问题: 1.我有一个名为“启用”的按钮,单击后它将变为禁用,为此我使用了“onclick”。在该按钮本身中,我使用了“onclientclick”来验证存在的文本框(如果单击启用时出现空白文本框,则会发出警报,我使用了javascript)。问题是每次页面加载时发出警报,按钮文本从“启用”更改为“禁用”,即使未单击也不例外 2.我有多个按钮,我希望在单击时将其从启用更改为禁用。后端是否可能有一个通用代码 Protected Sub cyoeno_Click(ByVal sender A

我有两个问题:

1.我有一个名为“启用”的按钮,单击后它将变为禁用,为此我使用了“onclick”。在该按钮本身中,我使用了“onclientclick”来验证存在的文本框(如果单击启用时出现空白文本框,则会发出警报,我使用了javascript)。问题是每次页面加载时发出警报,按钮文本从“启用”更改为“禁用”,即使未单击也不例外

2.我有多个按钮,我希望在单击时将其从启用更改为禁用。后端是否可能有一个通用代码

 Protected Sub cyoeno_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cyoeno.Click


    If cyoeno.Text = "Enable" Then
        cyoeno.Text = "Disable"
    Else
        cyoeno.Text = "Enable"

    End If

End Sub
钮扣

 <asp:Button ID="cyoeno"  OnClientClick="return validate();" OnClick="cyoeno_Click"   runat="server" Text="Enable" />

Javascript

 function validate(cyclenumber)
  {


       var cycle_1_enddate = document.getElementById('<%=txtEndDate.ClientId%>').value;
       var cycle_1_startdate = document.getElementById('<%=txtStartDate.ClientId%>').value;

       validatecommon(cycle_1_enddate,cycle_1_startdate);

           }

    function validatecommon(cal1,cal2) {


        if (cal1 == '' && cal2 == '') {
            alert("Start Date and End Date can not be left blank ");
            return true;
        }
        if (cal1 == '') {
            alert("End Date can not be left blank ");
            return true;
        }
        if (cal2 == '') {
            alert("Start Date can not be left blank ");
            return true;
        }

        if (cal1 != '' || cal2 != '')
         {
            var dt1 = Date.parse(cal1);
            var dt2 = Date.parse(cal2);
            if (dt1 <= dt2) {
                alert("End Date must occur after the Start date ");
                return true;
            }

             }

        return true;
    }
函数验证(cyclenumber)
{
var cycle_1_enddate=document.getElementById(“”).value;
var cycle_1_startdate=document.getElementById(“”).value;
validatecommon(周期结束日期,周期开始日期);
}
函数validatecommon(cal1、cal2){
如果(cal1=''&&cal2=''){
预警(“开始日期和结束日期不能为空”);
返回true;
}
如果(cal1=''){
预警(“结束日期不能为空”);
返回true;
}
如果(cal2=''){
警报(“开始日期不能为空”);
返回true;
}
如果(计算1!=''| |计算2!='')
{
var dt1=Date.parse(cal1);
var dt2=Date.parse(cal2);

如果(dt1我不是JavaScript或asp.net方面的专家,但是您可以创建句柄来处理多个按钮的单击事件,看起来像这样

Private Sub MultipleButtonClick(ByVal sender AS Object, ByVal e as System.EventArgs) Handles Button1.Click, Button2.click 'etc

    Dim btn as Button = DirectCast (sender,Button)
    If btn.Text = "Enable" Then
        btn.Text = "Disable"
    Else
        btn.Text = "Enable"
    End If
End Sub
这里有一个假设,所有按钮都有相同的文本。如果没有,那么您仍然可以使用相同的原则,但您也需要使用select语句

Private Sub MultipleButtonClick(ByVal sender AS Object, ByVal e as System.EventArgs) Handles Button1.Click, Button2.click 'etc

    Dim btn as Button = DirectCast (sender,Button)

    Select Case btn.name

        Case "First name"
                'do stuff here
        Case "Second Name"
                'do stuff here
        Case Else
            Exit Select

    End Select

    End If
End Sub

HTH

实际上,您正在发送重复的单击信号,这就是为什么即使只单击一次,您的函数也会执行两次

第一个信号是:

Handles cyoeno.Click
OnClick="cyoeno_Click"
复制信号为:

Handles cyoeno.Click
OnClick="cyoeno_Click"

基本上,您需要做的是删除其中一个。要么使用句柄,要么使用OnClick。不是两个都使用。

正如我前面所说,问题在javascript中。您在任何地方都返回true,但如果存在任何验证问题,那么您的函数应该返回false。 因为如果该函数返回false,则不会发生回发事件。如果该函数返回true,则它将直接转到服务器

简而言之,使用returnfalse避免页面加载

此外,如果这是您的实际代码,那么我不确定您为什么要更改按钮的文本,而不是理想情况下应该使用
cyoeno.Enabled=true;
cyoeno.Enabled=false;

对于下面的第二个问题,方法可能会对您有所帮助(它是C语言,但您可以使用它的逻辑)

在称之为“使用”时

ToggleEnableDisable(cyoeno);

你能给我们提供JavaScript函数validate的代码吗?我想问题出在这个函数中。注意:即使你说了什么,它也不起作用。当“onclientclick”它会验证是否有空白文本框,它会发出警报,一旦我在警报框中再次单击ok,它会再次加载,然后按钮文本会再次更改。是的,我的不好。正如@sagar shirke所回答的,您的问题是验证javascript函数使用的返回值。“错误”应该返回一个假值。如果验证返回假值,这将阻止回发。我尝试过它…不起作用。我没有尝试禁用itOK。是否可以提供您尝试过但不起作用的代码。可能会有一些修改,它将开始运行代码。