Избегайте двойного нажатия кнопки в asp.net после автоматической отправки текстового поля

В одном из моих проектов asp.net у меня есть два текстовых поля asp, которые должны запускаться на сервере и обновлять некоторые значения (в aspx.vb будут выполняться некоторые вычисления). Существует также кнопка отправки типа ввода (кнопка html), которая при нажатии вызывает javascript (который находится на странице .aspx).

<asp:TextBox ID="TextBox1" runat="server" AutoPostBack=true   Width="38px"></asp:TextBox>

<asp:TextBox ID="TextBox2" runat="server" AutoPostBack=true   Width="33px"></asp:TextBox>

  <input type="button" id="22" value="Draw graph" OnClick="surface.plot1();"   />
  &nbsp;<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

Теперь проблема в том, что если я ввожу некоторые значения в TextBox1 и TextBox2 и напрямую нажимаю кнопку, то surface.plot1(); не вызывается в первый раз, поэтому мне нужно нажать кнопку еще раз, чтобы surface.plot1(); уволили. Я знаю, что это связано с тем, что я ввел значение в TextBox2, а затем напрямую нажал кнопку, поэтому AutoPostBack выполняется при первом нажатии кнопки, а при втором нажатии кнопки вызывается фактическая функция? Итак, как избежать этого чтобы при первом нажатии кнопки сам surface.plot1(); вызывался? Или есть какие-либо альтернативы для достижения этого? (Но автопост TextBox2 обратно должен работать, иначе все пойдет не так).


person IT researcher    schedule 15.03.2013    source источник
comment
Путем обновления некоторых значений (в aspx.vb будет выполняться некоторый расчет). вы имеете в виду, что вы хотите сделать некоторые вычисления, когда пользователь что-то меняет в этих текстовых полях?   -  person PM.    schedule 15.03.2013
comment
@ВЕЧЕРА. Да, точно. Это нормально, если эти вычисления происходят в любое время до surface.plot1();(событие кнопки onclick)   -  person IT researcher    schedule 15.03.2013


Ответы (1)


Если вы можете выполнять эти вычисления в любое время до surface.plot1(), тогда вы можете изменить свою кнопку на стороне сервера и по ее щелчку выполнить вычисления в функции Click, как только вы закончите расчеты, вызовите javascript function surface.plot1() из вашего кода, как описано здесь. И не забудьте удалить AutoPostBack="true" из ваших текстовых полей.

person PM.    schedule 15.03.2013
comment
но моя функция javascript похожа на Surface.prototype.plot1 = function(x, y, z){//здесь идет код//}, так как я могу вызвать ее из кода (aspx.vb). Если я вызываю ее из aspx, то работает Surface.plo1(), но как вызвать из кода? (Это не похоже на другую функцию, например: функция abc() ) - person IT researcher; 15.03.2013
comment
Процедура вызова функции JavaScript из кода vb.net объясняется Здесь< /а> - person PM.; 15.03.2013
comment
Пожалуйста, посмотрите мой последний комментарий. я отредактировал это, пока ты отвечал за меня - person IT researcher; 15.03.2013
comment
Разница, которую я мог понять, заключается в входных параметрах, верно? - person PM.; 15.03.2013
comment
Поверхность — это объект, поэтому, если я вызову функцию из кода, она не будет работать должным образом. В Surface.plot так много функций, которые не работают должным образом. - person IT researcher; 15.03.2013
comment
Просто странная идея, вы можете вызвать простую функцию javascript, например, invokesurfacefunction(). А затем из этой функции вызовите ваш surface.plot1(). - person PM.; 18.03.2013
comment
Я уже пробовал это, но это не сработало. Затем я снова определил объект. Это сработало!! - person IT researcher; 18.03.2013
comment
Вы определили объект в вашей функции JavaScript, вызываемой из кода программной части? - person PM.; 18.03.2013
comment
Да, я определил объект в javascript, вызываемый из кода позади - person IT researcher; 18.03.2013