인 하루 또는 이틀 동안 머리를 깎아 내었습니다. 나는 이것을 해소 할 수있었습니다. 다른 사람들이 저처럼 좌절감을 갖기를 바랍니다.
이 게시물을 발견 한 사람은 누구나 직관적 인 대답을 알고 있으며, 양식의 기본 버튼을 설정합니다. 다음 부토에게 마법사의 n은 아무것도하지 않습니다. 따라서 다음 논리적 단계는 사용자 대신 버튼을 클릭하여 문제를 해결하려고 시도하는 것입니다. 나는 코드 숨김 내에서 내 텍스트 상자에 아래의 핸들러를 첨부했습니다 그 myButtonId 내가 내 기본으로 필요한 버튼의 id 가정 : 당신은 위의 생각
function textKeyDown(e) {
if (e.keyCode == 13) {
var myBtn = $get(myButtonId);
myBtn.click();
}
}
가 잘 작동 것이지만, 등 마법사 버튼을 강제로 클릭하면 매우 부적절한 충돌이 발생합니다. 페이지의 첫 번째 버튼도 클릭하여 스크립트를 통해 강제로 클릭하고 매우 이상한 결과를 생성하는 초기 버튼을 무시합니다. 필자의 경우 마스터 페이지의 첫 번째 버튼은 홈이라고하는 버튼이며 사용자가 클릭하면 홈 페이지로 돌아갑니다. 따라서 마법사의 다음 버튼을 클릭하기 위해 시도한 시도에서 아무런 이유없이 보였던 것을 제 홈페이지에서 바로 끝낼 것입니다. PageRequestManager.initializeRequest에 첨부 한 후, 두 번의 별도 포스트 백이 시작되었음을 알 수있었습니다. 즉, 강제 마법사 버튼 클릭 1 회, 당시 내 레이더조차 없었던 버튼 1 회 - 홈 페이지 버튼.
짧은 이야기로, 폼의 기본 단추 (Page.Form.DefaultButton)를 코드 내에서 업데이트 한 다음 코드 내에서이 스크립트를 내보내고 내 텍스트 상자에서도 참조하면 작동합니다 그냥 괜찮습니다 :
public static void ExampleAssignDefaultButton(WizardStepBase activeWizardStep, TextBox myTextBox, IButtonControl myButton)
{
// create the format string for the script
string javaScript = @"function defaultButton(src, evt){{
if(evt.keyCode == 13){{
var btn = $get('{0}');
setTimeout(new function() {{ btn.click(); }}, 5);
}}
}}";
// format it ...
javaScript = String.Format(javaScript, ((WebControl)myButton).ClientID);
// register it...
ScriptManager.RegisterClientScriptBlock(activeWizardStep, activeWizardStep.GetType(), "defaultButton", javaScript, true);
// assign it to my textbox
myTextBox.Attributes.Add("onkeydown", "defaultButton(this, event);");
// also update the form's default button:
myTextBox.Page.Form.DefaultButton = ((WebControl)myButton).UniqueID;
}
항상 위의 방법은 활성 마법사 단계의 OnPreRender 이벤트에서 호출한다는 점은 주목할 가치가 있습니다. 또한 마법사에서 한 단계에 하나의 텍스트 상자 만 있기 때문에이 동작을 단일 컨트롤에 할당해야했습니다. 이 픽스를 전체 페이지에서 Enter 키를 눌러 보려고 시도하지는 않았지만 그 컨텍스트에서 너무 다르게 동작한다고 상상할 수는 없습니다. 각 단계마다 입력이 많으면 마법사의 각 컨트롤에서 Enter 키를 누르지 않아도됩니다.
약 10 분이 걸릴 것으로 예상되는 작업을 수행하는 데 12 시간의 문제 해결 만 있습니다.
해피 코딩.
B
이 문제가 있습니다. 난 당신의 대답을 기반으로 해결하려고 노력하고 있지만 그냥 작동하도록 할 수 없습니다. javascript가 추가되었지만 페이지가 다음 버튼이 아닌 홈페이지 버튼에 계속 응답합니다 .... ....? 어떤 아이디어? –
안녕하세요 @ Mad Pierre - 여러 브라우저에서 사용해 보셨나요? "click()"을 결정한 Chrome과 같은 브라우저를 호출 할 수 없으며 대신 DOM2 이벤트를 생성하여 마우스 클릭을 시뮬레이트해야합니다. – Brian
아직 없습니다. 나는 IE (9)로 먼저 노력하고있다. 위의 다른 의견을 다시 보았습니까? 경고를 추가하면 스크립트가 작동합니까? –