2012-12-07 3 views
1

저는 사람들이 텍스트 상자에 내용을 입력하고 입력 한 내용을 기반으로 해당 디렉토리로 보낼 수있는 웹 사이트를 운영하고 있습니다.Internet Explorer에서 Javascript가 재미 있습니다.

고객 번호를 말하면 고객 번호 155가 있습니다. 그의 청구서는 /invoices/155 디렉토리에 있습니다. 나는 그의 고객을 입력 할 수 있고 # 그의 청구서로 그의 전화 번호부에 단추 누르기로 지시되기를 바란다.

이제 아래 코드를 코딩했지만 마우스로 단추를 클릭 할 때만 작동합니다. 인터넷 익스플로러에서 Enter 키를 누르면 주소 표시 줄에 많은 멍청이가 생기고 아무 것도하지 않습니다. 이 주소 표시 줄에 다음과 같습니다

file:///C:/Users/My%20Name/Desktop/test.html?dir=%2Finvoices%2F&userinput=155

대신 폴더 /invoices/155/로드.

<html> 
<head> 
<title>test</title> 
</head> 
<form name="goto" action=""> 
<input name="dir" type="hidden" value="/invoices/"> 
<input name="userinput" type="text"> <input type="button" value="try me" onclick="window.location=this.form.dir.value+userinput.value"> 

</form> 

코드에 어떤 문제가 있는지 사용자가 알 수 있습니까? 수정하려면 어떻게해야합니까? 미리 감사드립니다.

답변

0

파일 프로토콜을 사용하면 작동하지 않습니다. 특히 IE에서. 실제 웹 서버가 필요합니다.

고객의 ID를 으로 매우 높게 설정하면이 안전하지 않습니다. 누구든지 이드를 입력 할 수 있습니다. 로그인을 사용하십시오.

악의적 인 사용자를 방지하기 위해 사용자 입력을 번으로 위임하는 것이 중요합니다. 실제로는 ***입니다.

갈 길이 멀다.
인라인 너무 좋지 않다 자바 스크립트 :

+0

MD5 해시 암호가있는 각 고객 디렉토리에 대한 .htaccess 파일이 있습니다. 이는 인보이스 디렉토리로 이동하여 주소를 기억하지 않아도됩니다. –

+0

이 파일은 apache2 서버에 업로드됩니다. –

+0

그런 다음 해당 서버의 http 주소를 location.href – HerrSerker

0

난 당신이 BTW <form>

<!DOCTYPE html> 
<html> 
<head> 
    <title>test</title> 
    <script> 
     function handleFormSubmit(form) 
     { 
      window.location = form.dir.value + form.userinput.value; 
      return false; 
     } 
    </script> 
</head> 
<body> 
    <form onsubmit="return handleFormSubmit(this)"> 
      <input name="dir" type="hidden" value="/invoices/"> 
      <input name="userinput" type="text"> 
      <input type="submit" value="try me" >  
    </form> 
</body> 
</html>​​​​​​​ 

onsubmit 가야한다고 생각합니다. 스크립트 태그 또는 외부 .js 파일을 사용하십시오.

편집 :
그래, 오류는 내가 this.form.dir을 썼다는 것이었지만,은 이미 양식을 참조했기 때문에 this.dir 일 필요가 있었다. 이제는 javascript 처리기가 form 태그 (onsubmit="<handler-code>")에 있었기 때문이다. 즉 작품 - http://jsfiddle.net/Q875a/

편집 2 :
인라인 자바 스크립트 당신이에서 onXXX 속성 (... form, input) 당신의 HTML 태그에 자바 스크립트 코드를 작성하는 것을 의미합니다 - 그것은 을 아니다 읽을 수있는. 처리기 기능 (예 : handleFormSubmit) 내의 script 태그로 스크립트를 사용하면 스크립트가 더 많은 스크립트를 가져 오는 경우 특히 더 쉽게 읽을 수 있습니다. 현재 스크립트 및 onsubmit 속성을 참조하십시오.당신이 crossbrowser에 더 조치를 취할하려면

마지막으로, 강력한 자바 스크립트 개발 당신은 jQuery 살펴 보셔야합니다 - 그것은 이럴 문입니다 정말 전문 자바 스크립트 프로그래밍를 종료! 테스트에

JSFiddle :
http://jsfiddle.net/yNTK5/

주제와 관련된 jQuery를 - 링크 : Enter 키를 누르면 양식이 바로 그겁니다, 게시됩니다 일부 브라우저에서
http://api.jquery.com/submit/
http://api.jquery.com/on/
http://api.jquery.com/ready/

+0

제안에 대해 와파 파 감사드립니다. 나는 그것을 시험해 보겠습니다. 또한 인라인 자바 스크립트 무엇입니까? 스크립트 태그 란 무엇입니까? 나는 자바 스크립트 프로그래밍에 익숙하지 않다. –

+0

나는 당신의 제안 warappa를 시도하고 같은 일이 발생했습니다. 아무것도 작동하지 않습니다. :-( –

2

제출 버튼이 아닙니다. 제출 버튼을 사용하여 제출을 접수하면 모든 사례를 처리합니다.

<form name="goto" action="" onsubmit="window.location=this.dir.value+this.userinput.value;return false;"> 
<input name="dir" type="hidden" value="/invoices/"> 
<input name="userinput" type="text"> <input type="submit" value="try me"> 
</form> 
+0

Guffa, 코드를 제안 사항으로 변경했는데 아무 것도 작동하지 않습니다. 마우스를 누르거나 Enter 키를 누르지 마십시오. 둘 다이 문자열을 주소 표시 줄 "http://www.mydomain.com /test.html?dir=%2Finvoices%2F&userinput=170 "입력란에 170을 입력하면"http://www.mydomain.com/invoices/170/ "으로 보내야합니다. –

+0

@MatthewLenfest : 제출 이벤트에서 버그를 드려 죄송합니다. 필드에 액세스하려면 'this.form'대신 'this' 여야합니다. 위의 내용을 참조하십시오. – Guffa

관련 문제