개발/Javascript
input type 엔터키 서브밋 되는 현상
신매력
2017. 2. 14. 11:38
요런식으로 input text에 값 넣고 검색하는 화면을 만들었다.
'검색' 버튼에 onclick 이벤트를 주고
onclick이 되면 파라미터들을 좀 더 채워넣어서 submit을 스크립트 함수에서 시키도록 했다.
function search() {
$('#search_form').append('<input type="hidden" id="search_type" name="search_type"
value="'+ searchType + '" />').submit();
}
뭐 이런식으로?
마우스로 검색 버튼을 클릭했을 땐 잘 동작했다.
그런데 text에 값을 넣고 엔터를 치면 search() 함수에 들어오지 않고 바로 서브밋이 돼서 서버로 가는 것이었다.
검색 결과 아래 블로그에 잘 나와있었다.
https://blog.outsider.ne.kr/292
input type text가 1개만 존재하면 바로 서브밋이 된다는 내용이다.
(이유는 모름.. 브라우저들이 그렇게 처리한다고 함)
나는 엔터로도 검색이 먹혀야 하기 때문에 이렇게 해결했다.
$('#search_form').submit(function (e) {
$('#search_form').append('<input type="hidden" id="search_type" name="search_type" value="'+ searchType + '" />');
// submit() 호출하지 않아도 함수가 끝나면 수행 완료됨
});
* 참고로 검색 버튼은 type="submit" 으로 설정한다.
만약 submit을 아예 동작시키고 싶지 않으면
submit 함수 내에서 return false; 또는
e.preventDefault(); 를 수행한다.
e.preventDefault();는 이벤트의 동작을 멈추게 하는 함수이다.