2010-10-08 11 views
8

çalışmıyor Sadece bir web kullanıcı denetiminde bazı istemci tarafında (JQuery JavaScript) doğrulama eklemek istiyorum. Bir OnClientClick işleyicisi koydum ve işlev çağrıldı. ANCAK, ben "yanlış" return bile OnClick metodu daima kovulacağım. Neyi yanlış yapıyorum ?ASP.NET OnClientClick = "return false;"

Ben JQuery 1.4.2 ile 4.0 çerçevesini hedef VS 2010 birlikteyim. ve JQuery UI 1.8.4. Ben Page_Load olayı bir kesme noktası koyarsanız

function ValidateMail() { 
alert("Bouton clicked"); 
return false; 

}

, ben içeri görüyoruz ve btnAddSave_Click:

<td style="text-align:right"><asp:Button ID="btnAddSave" OnClientClick="return ValidateMail();" OnClick="btnAddSave_Click" runat="server" Text="Submit" /></td> 

Senaryo yöntemi: İşte

bir örnek kod var olay da yürütülür.

+0

uyarı kutusunda olmadan denediniz mi? Son zamanlarda bu gibi başka bir yazı okudum –

+0

Bunu ASP.NET 4 ile test ettim ve beklenen davranışı aldım. –

+3

Yanlışlıkla döndürülen javascript hatalarını kontrol edin false – Aristos

cevap

3

deneyin

OnClientClick="ValidateMail(); return false;" 
+0

Cevabınız için teşekkürler, işe yarıyor - ama bu hiç mantıklı değil! 3 ay önce bu aynı sorunu Firefox'la (son sürümlerinden önce) düzeltmiştim ve “ValidateMail()” ile çalıştı. –

+1

@ alonso.torres Bunu anlamıyorum. Bu sadece "her zaman" geri dönüş yapmaz, yani form doğrulamadan geçse bile artık geçersiz olarak geri dönecektir, dolayısıyla OnClick asla kovulmayacaktır? – rism

8

:

Sorumun (ve cevap) göz at. Gerçekten işe ne

oldu:

OnClientClick="if (validate_form() == false) return(false);" 
+0

çok teşekkür ederim günümü kurtardı! Hatta böyle bir problemim vardı! –

3

Büyük cevapları. Ben bu şekilde yapıyorum. Aynı sonuç - false Java işlevinden döndürülürse OnClick olayı kapatılmaz.

OnClientClick = "if (!ValidateDelete()) return false;" 
OnClick="btnDeleteSupplier_Click" 
0

Ben ASP.NET WebForms ile html düğmelerini kullanıyorum ve ben çalışıyorum örneklerle kod benim parçasını yerine neden çözüm bulamadık çünkü ben bu cevabı yazıyorum. İşte çözüm neden çalışmıyor. bunu, ona bana yardımcı kontrol gibi sorunu anlamak için yardımcı olacağını umuyoruz. Bu benim ilk yazı, stil için çok üzgünüm.

<button type="button" id="buttonAddOrEdit" class="btn btn-success" runat="server" onclick="return myValidate()" onserverclick="buttonAddOrEdit_ServerClick">Zapisz</button> 

Ve javascript fonksiyonu:

function myValidation() { 
     if (validator.form()) { 
      //Project logic 
      return true; 
     } 
     else return false; 
    }; 

doğru doğrulama düğmesine birleþtirildiðinde sunucu tarafında olay tetikleme değildi sonra istemci tarafı klik kullanma. Çözüm, aşağıdaki kod parçasını değiştirmek için belirtilen:

onclick = "if (! MyValidation())";

Bu sayfada, huntagramın üzerine kurulu olan html'nin onserverclick ile oluşturulmasından kaynaklanır. Html düğmesine Onserverclick javascript gelen __doPostBack yöntemi ile değiştiriliyor. istemci tarafında render html düğmesinin Fullcode bu şekilde görünüyor:

<button onclick="return myValidation(); __doPostBack('ctl00$PortalContent$buttonAddOrEdit','')" id="ctl00_PortalContent_buttonAddOrEdit" type="button" class="btn btn-success">Zapisz</button> Błąd składni 

Ve eğer statment ile değiştirdikten sonra.

<button onclick="if(!myValidation()) return; __doPostBack('ctl00$PortalContent$buttonAddOrEdit','')" id="ctl00_PortalContent_buttonAddOrEdit" type="button" class="btn btn-success">Zapisz</button> 

Geri dönüşle çalışma myValidate(); tirgger olayı olmaz çünkü __doPostBack'den önce döner.

Aşağıdaki kod, gerekirse, başka bir kod eklemenize izin verir ve herhangi bir sorun çıkarmaz.

0

Hemen eklemek javascript:

Örnek:

javascript:return ValidateMail(); 
+1

Yığın Taşmasına Hoş Geldiniz! Yığın Taşması [tüm mesajların İngilizce olması gerekir] (https://stackoverflow.blog/2009/07/non-english-question-policy/). Bu kurallara uymak için yayınınızın İngilizce olmayan bölümünü kaldırdım. İngilizce olmayan bir şekilde izin veren bu dil özel Yığın Taşması topluluklarından birini de kullanabilirsiniz: [İspanyolca] (http://es.stackoverflow.com), [Japonca] (http://ja.stackoverflow.com), [Rusça ] (http://ru.stackoverflow.com), [Portekizce] (http://pt.stackoverflow.com). – FelixSFD