내 페이지에는 부드러운 로그인 패널 역할을하는 두 개의 폼 요소가 있습니다. 패널을 활성화하면 전자 메일 주소와 암호를 입력하여 로그인 할 수 있습니다. 그 다음에 클릭 핸들러로 바인딩 된 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','')
내 실제 버튼과 숨겨진 ''모두 동일한 처리기를 실행하고 ** 숨겨진 ** 버튼에서 실행되도록 'DefaultButton'을 설정 한 것처럼 보입니다. 그것은 효과가있다! +10000 –