2014-02-23 3 views
0

Я создаю калькулятор с использованием ASP.NET и JavaScript. Когда пользователь нажимает на кнопку, прямо сейчас, пытаясь заставить ее работать для кнопки 7, она вызывает функцию javascript, чтобы увидеть, щелкнул ли пользователь кнопку очистки, кнопку обратного пространства или нажал цифровую кнопку. Если это числовая кнопка, функция должна добавить номер в текстовое поле. Например, если пользователь нажимает кнопку «7», затем нажимает «8», затем нажимает «*», а затем нажимает «1», появится текстовое поле: 78 * 1. Я не могу заставить функцию javascript работать. В настоящее время я просто пытаюсь его получить, когда нажата кнопка 7, она добавляет 7 в текстовое поле. Ниже мой код:Вызов функции JavaScript при нажатии кнопки в ASP.NET

<script> 
    var maxInputLength = 20; 

    function checkButtonClick(clickedValue) 
    { 
     var buttonValue = clickedValue.value; 
     var inputStr = document.getElementById('inputBox').value; 

     if (buttonValue == 'C') 
     { 
      document.getElementById('inputBox').value = ""; 
     } 
     else 
     { 
      if (inputStr.length < maxLength) 
      { 
       var num = 6; 
       document.getElementById('inputBox').value = inputStr + buttonValue + num; 
      } 
      else 
      { 
       //document.getElementById('msg').innerHTML = "Maxmum length is " + maxInputLength; 
      } 
     } 
     return false; 
    } 
    document.getElementById('inputBox').readOnly = true; 
    </script> 
    </head> 

    <body> 
    <form id="form1" runat="server"> 
     <div> 
     <div id="main" class="main"> 
      <div id="content" class="content"> 
      <h3 id="h3">Simple Calculator</h3> 
       <div id="calculatorDiv"> 
        <table cellpadding="0" cellspacing="0"> 
        <tr> 
         <td colspan="4"> 
          <asp:TextBox runat="server" CssClass="inputBox" disabled="disabled" ID="inputBox"></asp:TextBox> 
         </td> 
        </tr> 
        <tr> 
         <td colspan="4"> 
          <br /> 
         </td> 
        </tr> 
        <tr> 
         <td> 
          <asp:Button ID="ButtonNum7" runat="server" Text="7" CssClass="CalcButtons" OnClientClick="return checkButtonClick(7)" /> 
         </td> 
+0

если вы вызываете 'checkButtonClick (7)', то почему вы делаете 'clickedValue.value'? Просто возьмите 'clickedValue' –

+0

Также - вы можете сделать его общим для всех кнопок:' checkButtonClick ($ (this) .attr ('Text')) 'и присоединить' checkButtonClick' для всех кнопок. –

+0

Я вызывал свой maxInputLength с помощью mexLength, поэтому он никогда не запускал эту часть функции. TY Omri для указания этого. Я попытался использовать ваш способ сделать его общим для всех кнопок, но разве это не синтаксис PHP? – Stc5097

ответ

0

Ok, так что я начал писать много комментариев я понял, я просто Суммируя все это в ответе.

Несколько вещей в вашем коде не подключались ко мне. У вас был maxLength, который не определен. Кроме того, вы должны принять значение прямо из функции, а не с .Value, как это:

function checkButtonClick(clickedValue) 
{ 
     var buttonValue = clickedValue; 
     // rest of code 
} 

Пожалуйста, смотрите Fiddle Demo Here для демонстрации.

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