2012-12-04 5 views
2

정규 html 텍스트 필드에 명령을 입력 할 수있는 설정이 있습니다. 텍스트 필드에서 onkeypress 이벤트를 처리하고, 눌려진 입력 키인지 확인하고, 구문 분석 및 명령을 실행합니다.프롬프트를 사용하지 않고 javascript에서 사용자 입력 받기

예는 수 :

deletefile /testfolder/testfile.html 

코드는 가지 다음과 같습니다

inputControl.onkeypress = function(e) { 
    if (e.which == 13) { 
     var outputMessage = commandHandler.executeCommand(inputControl.value); 
     printOutputToScreen(outputMessage); 
     inputControl.value = ""; 
     inputControl.focus(); 
    } 
} 

(이것은 나의 코드가 실제로 모습입니다 그런데, 그냥 예입니다)

여기 아이디어는 명령을 쓰고, 출력을보고, 다른 명령을 쓰고, 출력을 볼 수있게하는 것입니다.

executeCommand는 commandstring을 구문 분석하고 적절한 인수를 사용하여 특정 명령을 호출합니다.

> deletefile /test1.html 
The file was deleted 

> deletefile /test2.html 
An error occured while trying to delete the file 

이 부분은 간단합니다. 내가 도움이 필요한 것은 이것이다 : 사용자가 단지 "deletefile"을 입력하면, 사용자에게 (outputarea를 사용하여) "어떤 파일을 삭제 하시겠습니까?"라고 물어볼 수 있기를 원합니다.

var additionalInput = prompt("Which file?"); 

을,하지만 난 프롬프트를 사용하지 않으 :

는 내가 함께 할 수있어.

var status = doSomeStuff(args); 
if (status.fail) { 
    tmp = getUserInput(); 
    doSomeFinalStuffBasedOnTheUserInput(tmp); 
} 

이 가능하다조차 :

같은 사람이 (프롬프트 사용하지 않는) 자바 스크립트의 중간에 유저에게 입력을 요구하는 좋은 방법을 알고 있나요, 내 인위적인 예를 잊고?

내가 여기에 자신을 설명 할 수 있어요,하지만 아무도 그들이 어떤 식 으로든 나를 도울 수 있다고 생각하면

하나 개의 솔루션은 글로벌 상태 변수를 구현할 수 :-) 알려 주시기 바랍니다 모르겠어요 하고 명령에 경로에 키 누름 - 이벤트 핸들러의 메커니즘으로 입력이 사용하는, 뭔가 같은 : 내 "응용 프로그램이"내부 상태 변수에 처리하고 키 누름 사이의 currentCommand를 저장해야 이런 식으로

inputControl.onkeypress = function(e) { 
    if (e.which == 13) { 
     if (state.additionalInputPending && currentCommand != null) { 
      currentCommand.executeWithAdditionalInput(); 
     } else { 
      // perform regular command execution 
     } 
    } 
} 

.

답변

0

입력을 요청하는 '멋진'대화 상자 (JS 프롬프트 아님)를 표시하는 jquery/javascript 솔루션을 사용할 수 있습니다.

http://trentrichardson.com/Impromptu/#Examples 마지막 예는 양식을 보여줍니다. Impromptu는 대화 상자/신속한 대안을위한 많은 (많은, 많은) 솔루션 중 하나 일뿐입니다.

다른 옵션은 JS 콘솔에서 직접 수행하여 실제 명령 줄 도구처럼 만드는 것입니다.

+0

예, 내가 찾고있는 것은 명령 줄 도구를 모방하는 솔루션입니다. 현재 설정은 상태 비 저장이므로 이전에 실패한 명령 실행 시도에 추가 정보를 라우팅 할 방법이 없습니다. 나는 옛날 텍스트 모험에이 능력이 있음을 안다. '> take >> 무엇을하고 싶니? > 빨간 책 >> 예약 가져 오기 (줄 바꿈을 추가 할 수 없음) – Thomas

+0

추적을 유지하고 전체 명령이 만들어 질 때만 실행되는 '스택'또는 입력 변수를 만들어야합니다. 그것은 당신이 위에서 한 것과 비슷합니다. 상태가 실패하면 추가 입력을 얻은 다음 doSomeStuff를 다시 호출하십시오. 다시 실패 할 경우, 완료 될 때까지 더 많은 입력을 요청하십시오. 이것을 없애기 위해서는 기존 args를 추적하고 새 args를 병합하면됩니다. 그리고 만약 그들이 취소 (Ctrl 키를 + C를 예를 들어) 다음 그냥 args를 버리고 다시 프롬프트. 아주 간단한 워크 플로우 여야합니다. –

관련 문제