2012-10-17 3 views
1
<script type="text/javascript"> 
window.onload = init; 

function init() { //wait for load and watch for click 
    var button = document.getElementById("searchbutton"); 
    button.onclick = handleButtonClick; 
} 

function handleButtonClick(e) { //get user input and go to a new url 
    var textinput = document.getElementById("searchinput"); 
    var searchterm = textinput.value; 
    window.location.assign("http://google.com/example/" + searchterm) 
} 
</script> 

<form> 
    <input type="text" name="search" id="searchinput"> 
</form> 
<input type="submit" value="Ara" id="searchbutton"> 

이 코드 블록에서 사용자 입력을 가져 와서 사용자 입력으로 새 URL로 이동합니다.JS가 양식 태그 사이에있는 경우 JS가 실행되지 않는 이유는 무엇입니까?

마지막 줄을 양식 요소로 옮기면 작동하지 않습니다. 하지만 id를 사용하여 요소를 찾습니다.

+0

제출 버튼이 양식의 일부인 경우 양식 제출에 도움이되며 페이지가 새로 고쳐집니다. – Dev

답변

2

, 스크립트 자체를 가리 킵니다. <button type="button">을 사용하면 제출 기능이없는 단순한 버튼을 정의 할 수 있습니다.

주변 : <form> 요소가 필요하지 않은 경우 코드에서 코드를 삭제하지 않으시겠습니까?

+0

답변과 제안에 감사드립니다. 나는 코딩에 새로운 사람이다. – Imrahil

3

고객님의 submit 버튼이 양식을 제출했기 때문인 것으로 판단됩니다.

코드에 e.preventDefault();return false;을 추가하십시오.

function handleButtonClick(e) { //get user input and go to a new url 
    e.preventDefault(); 
    var textinput = document.getElementById("searchinput"); 
    var searchterm = textinput.value; 
    window.location.assign("http://google.com/example/" + searchterm) 
    return false; 
} 

이렇게하면 양식에서 크로스 브라우저를 제출하지 않아야합니다. 대신

<input type="submit" value="Ara" id="searchbutton"> 

이 (MDN docu), 그래서 대신 자바 스크립트를 실행 버튼을 제출 한 형태로

<button type="button" id="searchbutton">Ara</button> 

귀하의 버튼을 작동, 그것은 또한 양식을 제출하려고 사용

+0

e.preventDefault()와 false를 반환하면 기본적으로 동일한 작업을 수행합니다 ... –

+1

@Alex 예. preventDefault()'메쏘드이므로, 이것은 "Catch All"비트의 코드입니다. –

+0

감사합니다. 오페라 확장 기능을 사용하겠습니다. 이것은 약간 힘든 방법입니다. @ Sirko의 답을 선호합니다. – Imrahil

4

아래 코드 조각에서 설명한대로 OnSubmit을 지정할 수 있으며 작동합니다.

<form method="GET" onsubmit="handleButtonClick(event)"> 
    <input type="text" name="search" id="searchinput"> 
</form> 

function handleButtonClick(e) { 

    var textinput = document.getElementById("searchinput"); 
    var searchterm = textinput.value; 
    window.location.assign("http://google.com/example/" + searchterm) 
    return false; 
} 
+0

false가 반환되는 이유는 무엇입니까? (나는 코딩 할 때 새로운 것이다.) – Imrahil

관련 문제