2015-07-06 4 views
0

У меня есть две проблемы:Как предотвратить изменение текста кнопки?

1.I есть кнопка под названием «включить» один раз щелкнул он становится отключить, для которого я использовал «OnClick» .В самой этой кнопки я использовал «OnClientClick», чтобы проверить текстовое поле то есть присутствует (предупреждает, если пустое текстовое поле при нажатии кнопки включения, которое я использовал javascript). Проблема заключается в том, что каждый раз, когда он дает предупреждение, загружается страница, и текст кнопки изменяется с разрешения, чтобы отключиться даже при отсутствии нажатия

2.I несколько кнопок, которые я хочу, чтобы chnge от включения отключился при нажатии. Есть ли возможно иметь общий код в задней части

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; 
    } 
+0

можете ли вы предоставить нам код JavaScript FUNC Я думаю, проблема в этой функции. –

ответ

0

Ну я не эксперт в любом JavaScript или asp.net, но вы можете создавать дескрипторы для обработки события click несколькими кнопками, которые выглядят примерно так:

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 

НТН

0

Вы фактически отправляют повторяющиеся сигналы щелчка, поэтому ваша функция выполняется дважды, даже если вы только щелкнул один раз.

первый сигнал:

Handles cyoeno.Click 

дубликат сигнала:

OnClick="cyoeno_Click" 

То, что вы в принципе нужно сделать, это удалить один из двух. Это либо вы с Handles, либо вы идете с OnClick. Не оба.

+0

: Даже после того, как вы сказали, что это не работает. Когда «onclientclick» проверяет, есть ли пустое текстовое поле, оно дает предупреждение, как только я нажимаю ok в окне предупреждения, он снова загружается, а затем снова меняется текст кнопки. –

+0

Привет, моя вина. Как ответил @ sagar-shirke, ваша проблема - это возвращаемые значения, которые вы используете для функции javascript проверки. «Ошибка» должна возвращать ложное значение. Это предотвратит обратную передачу, если проверка вернет false. –

0

Как я уже говорил ранее, проблема заключается в javascript. Вы возвращаете истину каждый раз, но если есть какая-либо проблема проверки, то ваше fucntion должно возвращать false. Потому что, если эта функция возвращает false, то событие postback не произойдет, если оно истинно, то оно будет напрямую переходить на сервер.

Вкратце используйте возврат false, чтобы избежать загрузки страниц.

Кроме того, если это ваш фактический код, то я не знаю, почему вы меняете текст кнопки вместо того, что в идеале вы должны использовать cyoeno.Enabled = true; и cyoeno.Enabled = false;

Для вашего второго вопроса ниже метод может помочь вам (это находится в C#, но вы можете использовать логику его)

public void ToggleEnableDisable(Button btn) 
{ 
    if (btn.Enabled) 

    { 
     btn.Enabled = false; 
    } 
    else 
    { 
     btn.Enabled = true; 
    } 
} 

призывая его используют

ToggleEnableDisable(cyoeno); 
+0

Я пробовал ... не работает. Я не пытаюсь отключить его –

+0

OK .. Можно ли предоставить код, который вы пробовали, который не работает. Может быть, несколько изменений в нем запустит код. –

Смежные вопросы