7
我覺得我已經做了很多次這種情況,它通常工作,所以我明顯缺少的東西。ASP.NET/JavaScript - 爲什麼不「返回錯誤」不能防止回傳?
這裏是我的服務器端ASP.NET按鈕:
<asp:Button ID="btnFoo" runat="server" Text="Foo" CssClass="button foo" OnClientClick="foo_Click();" />
當中去是客戶上呈現爲:
<input type="submit" name="reallylongclientid" value="Foo" onclick="foo_Click();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(reallylongclientidandpostbackoptions, false, false))" id="reallylongclientid" class="button foo">
沒有意外出現。
這裏的驚喜,在我的JavaScript函數:
function foo_Click() {
return false;
}
好了,還有更多的比,但我把它砍下來證明這一點。
當我點擊按鈕時,它調用客戶端函數,並返回false。
但它仍然回發到服務器,爲什麼?
我基本上要做到這一點按鈕的點擊:
- 待辦事項客戶端驗證。
- 如果驗證通過,發回
- 如果不是,則在窗體上顯示一些錯誤消息。
當然,我可以改變這一個客戶端按鈕(INPUT TYPE =「按鈕」)和手動開球時,我想回發,但我不應該需要做的。或者我應該?
知道這是明顯的(拍打頭部)。謝謝。 – RPM1984 2010-08-06 06:03:12
我只注意到如果我做「var passedValidation = new Boolean(false); return passedValidation」它仍然回傳。但如果我只是返回false,它不會。 WTF?有任何想法嗎? – RPM1984 2010-08-06 06:12:11
@ RPM1984:在布爾上下文中使用布爾型構造函數時,使用'new'關鍵字創建'Boolean' * object wrapper *,在JavaScript中,任何對象都被認爲是* truthy *,例如:'' !! new Boolean(false)'==>'true',我會建議你簡單地使用布爾值true或false,直接表示原始值... – CMS 2010-08-06 06:22:56