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

В един от моите asp.net проекти имам две текстови полета asp, които трябва да се изпълняват на сървъра и да актуализират някои стойности (в aspx.vb ще се извърши някакво изчисление). Има и бутон за изпращане от тип input (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

Зададох бисквитката във Vaadin и се опитах да я получа от друго приложение, което се изпълняваше на различен сървър, но не успях да получа тази бисквитка, което съм задал във Vaadin?

Трябва да деактивираме бисквитката httpOnly.

Някой може ли да ми помогне „Как да разреша този проблем?“

  -  person PM.    schedule 15.03.2013
comment
@PM. Да точно. Добре е, ако тези изчисления се извършват по всяко време преди събитието surface.plot1();(button onclick)   -  person IT researcher    schedule 15.03.2013


Отговори (1)


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

person PM.    schedule 15.03.2013
comment
но моята javascript функция е като Surface.prototype.plot1 = function(x, y, z){//кодът отива тук//}, така че как мога да го извикам от кода зад (aspx.vb) Ако го извиквам от aspx page тогава 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 е обект, така че ако извикам функцията от задния код, тогава тя не работи правилно. В 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