2010-07-30 7 views
1

안녕하세요, 입력 키가 눌려지면 제출하지 않는 검색 필드가 있습니다.이 문제는 IE8에서만 발생하며 다른 모든 브라우저는 잘 작동합니다 (심지어 IE6). 제발 내가 그의 손을 필요로하고, 내가 가지고있는 코드 밑에서 찾으십시오.IE8 - Enter 키가 검색 필드를 제출하지 않습니다.

<div class="box-search"> 
       <input type="text" class="text-box" id="text-search" /> 
       <label class="overlabel" for="text-search">Enter keyword(s)</label> 
       <input type="submit" value="" name="btn-submit" class="btn-go" onclick="javascript:goSearch();return false;" /> 
</div> 

Ok이 양식은 ASP 코드 페이지에 있음을 잊어 버렸습니다. 그 이유는 양식 요소 안에 포장되어 있지 않습니다.

+1

당신은 계속해서 onclick 핸들러에서'javascript :'를 제거 할 수 있습니다, 그것은 완전히 쓸모가 없습니다. –

답변

4

텍스트 상자와 버튼 주위에 <form></form> 태그를 넣어야합니다. Like

<form method='POST' onsubmit='javascript:goSearch();return false;'> 
      <input type="text" class="text-box" id="text-search" />  
      <label class="overlabel" for="text-search">Enter keyword(s)</label>  
      <input type="button" value="" name="btn-submit" class="btn-go" onclick="javascript:goSearch();return false;" /> 
</form> 

또 다른 방법은 텍스트 상자의 keydown 이벤트를 사용하여 입력 키인지 확인하는 것입니다.

희망이 도움이됩니다.

+0

이것은 완벽하게 작동했습니다. 고맙습니다!!! – Ozzy

+0

아마도 onclick과 onsubmit을 모두 가질 수는 없습니다. – Znarkus

+0

그게 낫습니다. 이제 그들은 enter를 누르거나 버튼을 클릭 할 수 있습니다. –

0

'제출'입력 유형에 GoSearchreturn false이라는 함수 호출이있는 onclick 이벤트가 있다는 사실과 관련이 있습니까?

goSearch() 함수의 내용을 지나칠 수 있습니까?

0

"false false"를 제거하면 어떻게됩니까? 제출을위한 이벤트 처리기에서? 사용자가 텍스트 입력 필드에서 Enter 키를 누르면 Internet Explorer는 제출 단추가 사용 된 것처럼 동작하지만 "false"는 이벤트 버블 링을 방지합니다.

EDIT : 새로운 ASP 정보.

이를 참조하십시오 http://mikepope.com/blog/AddComment.aspx?blogid=309 그는 당신이해야 할 모든 당신의 Page_Load 이벤트에 다음을 추가한다 말을 제외하고, 여기 그래서 세부 사항을 작동하지 않습니다 방법에 대한 설명이 있습니다

Page.RegisterHiddenField("__EVENTTARGET", "MyDefaultButton"); 
+0

코드에서 false를 반환하지만 ie8은 여전히 ​​동일한 문제가 있습니다. . – Ozzy

1

또 다른 방법을 대신 제출 버튼에 onclick의 이름을 입력하면됩니다.

<form action="script.php" method="post" onsubmit="goSearch();return false"> 
<div class="box-search"> 
    <input type="text" class="text-box" id="text-search" /> 
    <label class="overlabel" for="text-search">Enter keyword(s)</label> 
    <input type="submit" value="" name="btn-submit" class="btn-go" /> 
</div> 
</form> 

편집 : 추가 조치 및 방법은 속성. 작업 특성은 유효성 검사에 필요합니다.

+0

또한 양식을 전달하십시오. 성공할 경우 스크립트의 끝에서 false를 반환하는 onsubmit = "return goSearch (this)", 양식을 서버에 제출하려는 경우 true – mplungjan

+0

성공시'return false'가 표시됩니다 조금 거꾸로. 그럼 나는'return! goSearch (this)'와'return true'를 성공으로 얻었습니다. – Znarkus

1

나는 IE8에 버그가 있다는 것을 발견했으며 때로는 양식이 입력 키에 제출되지 않을 수도 있습니다.

가장 좋은 방법은 Enter 키를 처리하는 이벤트를 설정하는 것입니다. 당신이 한 경우

<form action="url_here" method="post"> 
<div class="box-search"> 
    <input type="text" class="text-box" id="text-search" /> 
    <label class="overlabel" for="text-search">Enter keyword(s)</label> 
    <input type="submit" value="" id="btn-submit" name="btn-submit" class="btn-go" /> 
</div> 
</form> 

폼 태그를 무시 :하는 HTML을

document.getElementById("input_box_id").onclick = function(e){ 

    var keycode =(window.event) ? event.keyCode : e.keyCode; 

    if (keycode == 13) //enter 
    { 
     document.getElementById("input_box_id").click(); 
    } 

}; 

을 변경 :

자바 스크립트에서
$("input_box_id").keydown(function(e){ 

    if (e.keyCode == 13) //enter 
    { 
     $("btn-submit").click(); 
    } 
}); 

이 될 것입니다 :

jQuery를 당신은 할 것 이미 Asp.net 양식이 있습니다.

0

오래된 티켓,하지만 난 차임 싶습니다 IE8은 다음과 같은 독특한 일을 : Enter 키 양식을 제출하지만, 어떤이

<input type="submit" name="MySubmitButton" value="I hope I detect THIS VALUE in POST" /> 

은 POST로 전송되지 않습니다.

IE9는 동작을 변경하고 값을 보냅니다. Chrome은 내 테스트에서 알 수있는 한 항상 가치를 보냈습니다.

"IE8에 제출하지 않았습니다."라는 불만이 있습니다. 많은 사람들이이 문제에 기여할 수 있다고 생각합니다. 이것이 그 중 일부를 돕기를 바랍니다.

관련 문제