2009-05-27 108 views
0

我在頁面上使用多重框架集,每個框架集都有一個關聯的按鈕來執行服務器/客戶端回發。我想改變默認的回車鍵來選擇正確的按鈕,這是我使用jQuery的soltuion。使用jQuery更改輸入密鑰?

$("#<%= SearchCustomers.ClientID %>").find(":input").click(function() { $(this).parents("FIELDSET").addClass("default"); }).blur(function() { $(this).parents("FIELDSET").removeClass("default"); }); 
    $("#<%= SearchGroups.ClientID %>").find(":input").click(function() { $(this).parents("FIELDSET").addClass("default"); }).blur(function() { $(this).parents("FIELDSET").removeClass("default"); }); 


    $(document).keypress(function(e) { 
     if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) { 
      $(".default").find(":submit,:button").click(); 
      return false; 
     } 
    }); 

這是工作完美,但我一直在尋找方法來改善這一點。現在,代碼依賴於我將框架集設置爲「runat = server」,因此我可以訪問「ClientID」屬性並將ID注入到我的javascript中。這使代碼重新使用少一點,所以我很好奇,如果別人有更好的主意......

感謝您的意見!

回答

1

因爲你的前兩行是如此的相似我將其降低到:

$('FIELDSET').find(":input").click(function() { 
    $(this).parents("FIELDSET").addClass("default"); }).blur(function() { 
    $(this).parents("FIELDSET").removeClass("default"); }); 

如果沒有比你關心的兩個頁面上的任何其他框架集,這應該是罰款。那麼你不需要擁有ClientID。

如果不能保證這些是僅有的兩個在頁面上,那麼我認爲你需要的RUNAT =服務器和客戶端ID - 因爲你實際上需要做的唯一識別那些特定的兩個框架集

編輯:或者,您可以標記出你想要有出現此行爲與特定的字段集類:

<fieldset class='UseAutoEnterKey'> .... 

然後你就可以添加都在一個與類選擇的行爲:

$('FIELDSET.UseAutoEnterKey').find(......... 
+0

我喜歡類的想法,因爲代碼在一個小部件中使用,我不能保證頁面上不會有其他FRAMESETS。謝謝! – Zachary 2009-05-27 19:59:34

+0

對於獎勵積分,這將是學習創建jquery插件的一個很好的實驗。這將是一個很好的簡單插件,這樣頁面上的代碼就會是:$('select my fieldsets')。UseAutoEnterKey(); – Clyde 2009-05-27 20:05:12

+0

我會給它一個機會,這將是一個很好的excerise ...我會在這裏發佈我的結果... Zach – Zachary 2009-05-30 03:47:57