2012-07-18 50 views
0

我在我的web應用程序中使用linkbuttons,我的'組合控件'沒有使用ASP面板(因此沒有'DefaultButton'屬性,不是它會工作)。我的鏈接按鈕目前有href設置爲'javascript:_doPostBack ..'(asp默認),但爲了啓用我的自定義客戶端驗證腳本,我還有一個'onclick'屬性的代碼。作爲默認按鈕的LinkBut​​ton

典型按鈕:

<div class="button orange o_lime right Normal"> 
    <a onclick="if (!validateFormmainContent_Login()) return false;" 
     id="mainContent_Login_ctl09_mainContent_Login_btnSubmit" defaultB="loginForm" 
     href="javascript:__doPostBack(&#39;ctl00$mainContent$Login$ctl09$mainContent_Login_btnSubmit&#39;,&#39;&#39;)"> 
     Submit 
    </a> 
</div> 

典型中形成行要求的默認按鈕「行動

<div class='row' ID='mainContent_Login_ctl03'> 
    <label ID='mainContent_Login_ctl04'>Email/Username</label> 
    <input name="ctl00$mainContent$Login$txtAccount" type="text" id="mainContent_Login_txtAccount" class="lime validate[required]" defaultB="loginForm" /> 
</div> 

我的代碼當前的嘗試,使這項工作:

<script type="javascript"> 
$('input[defaultB]').keypress(function (e) { 
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {  
     $('a[defaultB=' + $(e.srcElement).attr('defaultB') + ']').click(); 
     return false; 
    } else { 
     return true; 
    } 
}); 

我目前的嘗試解決方案將一個值賦給'defaultB',其中某些值與相應按鈕中定義的'defaultB'值相匹配,例如按下'13'(回車)應啓動'click'事件。但什麼也沒有發生:(

我創建了一個的jsfiddle幫助,但它不是愚蠢的「無法找到函數」的異常工作。:(

http://jsfiddle.net/Ninjanoel/yQvKC/

我真的很喜歡!?得到這個工作,而無需返工我的所有控件誰能幫

+0

感謝迄今爲止的兩個答案,只是說我已經在小提琴的不同階段嵌入了一些「提醒」,我基本上需要它在所有提醒之前打開所有提醒,然後我才能夠正常工作。如果'__doPostBack'中的消息總是無法訪問,我想要一個很好的理由。感謝大家。 – Nnoel 2012-07-18 13:25:01

+0

我基本上試圖設計一個解決方案,我可以在文本字段和作爲按鈕的'a'標記中添加一個屬性(在這種情況下爲'defaultB'),並使其自動充當ASP鏈接按鈕已被鼠標點擊(踢開href javascript和onclick事件代碼) – Nnoel 2012-07-18 13:27:51

回答

0
$('input[defaultB]').keypress(function (e) { 
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) { 
     alert('enter pressed');  
     var _el = $('a[defaultB='+ $(e.srcElement).attr('defaultB') + ']'); 
     eval(_el.attr('onclick')); 
     eval(_el.attr('href')); 
     return false; 
    } else { 
     return true; 
    } 
}); 

http://jsfiddle.net/Ninjanoel/5WDKT/1/

是我在這種情況下使用的 'EVAL' 的危險?對屬性使用'eval'似乎對我有用,但我想知道這樣做是否有太大的安全風險?

0

我已經更新代碼中看到:

http://jsfiddle.net/yQvKC/5/ 

什麼我相信的你缺少的是:$(本)

我使用

$('a[defaultB=' + $(this).attr('defaultB') + ']').click(); 

然後 $( '一個[defaultB =' + $(e.srcElement).attr( 'defaultB')+「] 「)。單擊();

+0

謝謝你的回答。但是,這仍然沒有正確執行「按鈕點擊」,而且您的更改沒有意義,並且您的小提琴沒有演示它正常工作,我想在幾個地方向所有消息發送警報消息 – Nnoel 2012-07-18 13:18:20

0

問題是,您將按鍵事件綁定到輸入按鈕。所以如果用戶按下按鈕然後按下回車鍵,則會觸發事件。你應該把它綁定到表單上!

我已經更新了代碼: http://jsfiddle.net/YN56H/2/

您可能必須(根據從asp.net生成的HTML醜)上的默認按鈕的選擇工作,但我希望這有助於。

+0

謝謝您的回答。但是,這仍然沒有正確執行「按鈕點擊」。因爲這是ASP,所以我需要「做postbacl」(代碼中的錯字)消息出現,但不是,因此它仍然不起作用。而且,在表單上執行它並不合適,因爲我需要編輯文本框中的'defaultB'中的值,以便我可以使用該'defaultB'值來查找相應的單擊按鈕。 – Nnoel 2012-07-18 13:20:19

+0

此外,將代碼移出'onclick'變成$(id).click()對我的情況並不理想。 – Nnoel 2012-07-18 13:41:40