2008-12-02 90 views
4

我有一個搜索框和按鈕在頂部的母版頁。此搜索功能正在接管使用此母版頁的所有網頁表單的「輸入」鍵。也就是說,如果我有一個使用此主頁面的登錄頁面,並且用戶輸入他們的用戶名/密碼並點擊「輸入」,而不是登錄用戶,系統將執行搜索。ASP.NET的默認按鈕

什麼是設置默認提交按鈕的最佳途徑。我可以在ASP面板中包裝所有東西,並設置DefaultButton屬性,但這看起來有點乏味。有沒有更好的辦法?

回答

0

組焦點上的文本框中,

Page.RegisterStartupScript( 「SetFocus的」, 「<腳本>的document.getElementById('」 + TextBox1.ClientID +「').focus(); </SCRIPT> 「);

然後

在最後一個文本框,你可以做這樣的事情的keydown事件:

如果e.KeyCode = Keys.Enter然後 Me.Button1.Select() 結束如果

3

使用defaultbutton形式或面板的財產

<form defaultbutton=「button1」 runat=「server」>  
    <asp:button id=「button1」 text=「Same Page」 runat=「server」/>  
    <asp:panel defaultbutton=「button2」 runat=「server」>  
     <asp:textbox id=「foo」 runat=「server」/>  
     <asp:button id=「button2」 runat=「server」/>  
    </asp:panel>  
</form> 
+2

的OP指出這一點,他知道這個選項,而是想知道是否有更好的方法。我正試圖在網頁上用100多頁的表單解決這個問題。必須將此代碼添加到每個內部頁面將太乏味了。我們可以在母版頁級別上做些什麼來告訴搜索按鈕'永遠不要假設這是默認按鈕'? – 2011-04-08 15:28:24

2

正如你已經發現默認的按鈕可能會導致問題時,頁面上有多個按鈕。我想借此極客建議,但通過移除SETFOCUS客戶端腳本簡化它,並通過添加keydown事件既搜索文本框和登錄文本框擴展它使得根據,如果你的用戶使用搜索回車鍵觸發正確的按鈕框或登錄框,或任何其他文本框你想添加的JavaScript來。

您可以設置專注於加載頁面(如果您喜歡,請在後面的代碼中)以保存用戶的某些鼠標工作或選項卡,如果有合理的控件供用戶啓動,但否則用戶正在進行交互的控件與應該確定頁面的流程和輸入鍵做什麼。

0

而不是使用JavaScript來操縱頁面,你可以把搜索框和提交按鈕進入主頁上的IFRAME。如果焦點位於iframe中,點擊將提交搜索表單,如果用戶位於頁面內的主表單上,他們將提交正常頁面。

的 src屬性指向一點自我包含的牽着你的文本框的aspx頁面,並提交按鈕,重定向到搜索結果的形式。

0

這就是我們試圖在我們的項目,似乎工作。我將Search asp:Button更改爲一個asp:LinkBut​​ton。然後,我添加了一些CSS樣式,使它看起來像一個按鈕的背景圖像。當按Enter鍵時,LinkBut​​ton顯然不會被頁面用於確定哪個Button是默認操作。甜蜜的部分是,LinkBut​​ton仍然可以執行與它們相關的點擊操作,所以我不必更改我的任何代碼隱藏內容。