2009-12-29 9 views
1

내 페이지에는 부드러운 로그인 패널 역할을하는 두 개의 폼 요소가 있습니다. 패널을 활성화하면 전자 메일 주소와 암호를 입력하여 로그인 할 수 있습니다. 그 다음에 클릭 핸들러로 바인딩 된 C# 함수가있는 <asp:LinkButton...이 있습니다. 그 함수는 다른 로그인 페이지에 게시 할 것입니다 (우리는이 방법으로 우리 앱이 다른 사이트와 상호 작용하는 방식을 기반으로해야합니다). 그리고 일부 로그인 쿠키를 설정합니다. 내 credentails 입력하고 물리적으로 버튼을 클릭하면 모든 것이 잘 작동합니다. 이메일을 입력 한 다음 비밀번호를 입력 한 다음 [ENTER] 키를 치면 로그인 버튼의 클릭 핸들러가 작동하지 않습니다. 좋아, 그래서? 나는 전에 이것을 다뤘다. 여기에 내가 성공하지으로이 문제를 해결하려고 한 모든 방법은 다음과 같습니다ASP.NET 및 jQuery 클릭 시뮬레이션에서 Enterpress 이벤트


추가 된 별도의 숨겨진 텍스트 상자 로그인 버튼

<asp:TextBox ID="tb1" runat="server" Style="display:none; visibility:hidden;"></asp:TextBox> 

없음 성공 후.


양식에 DefaultButton 속성을 설정합니다 (I은 MasterPage에있어 이후) :

<form DefaultButton="lbLogin"> 

없음 성공.


<asp:Panel ... > 내 필드를 포장하고 DefaultButton 속성

<asp:Panel ID="pnlFields" DefaultButton="lbLogin" runat="server">... my stuff here ...</asp:Panel> 

아니 성공을 설정합니다. jQuery를 통해 enterpress을 캡처 시작


는 :
// if I hit enter on ANY input, simulate a click of the login button 
$(".login-fields input").keypress(function(e) { 
    if ((e.which && e.which === 13) || (e.keyCode && e.keyCode === 13)) { 
    $(".btnLogin").click(); 
    return false; 
    } 
}); 

$(".btnLogin").click(); 작동하지 않았다

은 그래서 $(".btnLogin").trigger("click");을 시도했다. 좋지 않다. 나는 또한 작동하지 않을 것이라고 알고있는 $(".btnLogin").submit();을 시도했다. (하지만 어쨌든 시도했다.)

return false이 있으므로 아무 것도하지 않으므로 제거하고 시나리오를 다시 시도했습니다. 주사위가 없다.

전에 keypress은 좋은 자바 스크립트 이벤트가 아닐 수도 있으므로 위의 시나리오와 함께 keyup을 시도했지만 여전히 아무것도 얻지 못했습니다.

이제

, 여기에 작동하는 것 같습니다 일이 그리고 자바 스크립트 eval() 사용이 포함됩니다 :

// if I hit enter on ANY input, simulate a click of the login button 
$(".login-fields input").keypress(function(e) { 
    if ((e.which && e.which === 13) || (e.keyCode && e.keyCode === 13)) { 
    eval($(".btnLogin").attr("href")); // BAD! right? 
    } 
}); 

사람이 내가이 일을없이 를 작동시킬 수있는 방법을 알고 있나요 JS의 eval()? 참고로,이 로그인 링크 href 생성 실제이다

javascript:__doPostBack('ctl00$lbLogin','') 

답변

2
<asp:Panel runat="server" ID="pnlWrapper" DefaultButton="btnHidden"> 
    <asp:LinkButton runat="server" ID="btnVisible" Text="Login" OnClick="btnVisible_Click" /> 
    <asp:Button runat="server" ID="btnHidden" style="display:none;" OnClick="btnVisible_Click" /> 
</asp:Panel> 

짜잔.

+0

내 실제 버튼과 숨겨진 ''모두 동일한 처리기를 실행하고 ** 숨겨진 ** 버튼에서 실행되도록 'DefaultButton'을 설정 한 것처럼 보입니다. 그것은 효과가있다! +10000 –

관련 문제