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