2008-11-03 40 views
0

我在samve事件上對客戶端執行兩個驗證。 我定義我的驗證如下圖所示Javascript - 同一事件上的多個客戶端驗證

btnSearch.Attributes["OnClick"] = "javascript:return prepareSave(); return prepareSearch();" 

的僞碼

prepareSave(): 
{ 
    if (bPendingchanges) 
    { 
    return confirm('Need to save pending changes first, click OK and loose changes or cancel to save them first') 
    } 
    else 
    {return true} 
} 

的僞碼

prepareSearch(): 
{ 
    if (bNoSearchText) 
    { 
     alert('Please specify search criteria before proceeding') 
     return false; 
    } 
    else 
    {return true;} 
} 

bPendingchanges=false,我從來沒有得到第二確認運行。 任何人都可以迅速發現我在此忽略的內容嗎?請?

回答

0

您的第二個return聲明將永遠達不到。執行在javascript:return prepareSave()後停止。

看起來像你想,如果這兩個函數返回true返回true - 因此,這樣做:

btnSearch.Attributes["OnClick"] = javascript: return prepareSave() && prepareSearch(); 
+0

該代碼將執行驗證只有一次,當按鈕設置。你想在一個匿名函數中進行換行或將它們設置爲一個字符串。 – sblundy 2008-11-03 20:38:46

0

這是因爲返回阻止第二驗證運行。試試這個

btnSearch.Attributes["OnClick"] = "javascript:return prepareSave() && prepareSearch();" 
0

"javascript:return prepareSave(); return prepareSearch();"

1)你不應該有 「的javascript:」
2)return prepareSearch();永遠不會被執行,因爲"return prepareSave();退出事件處理程序

嘗試"return (prepareSave() && prepareSearch());"

顧名思義,
2

return將控制返回到所稱的代碼。因此,返回語句後的任何內容都不會執行。

return prepareSave(); return prepareSearch(); 
//     ^^^^^^^^^^^^^^^^^^^^^^^ e.g. this part 

從不執行。嘗試return (prepareSave() && prepareSearch());