2009-08-31 4 views
4

양식 제출과 자바 스크립트 확인에 문제가 있습니다. 기본적으로 "제출"버튼을 누르면 다음 자바 스크립트가 호출됩니다. 내가 대신 확인의 취소 쳤을 때 나는 주소 표시 줄을 감시하고 #의 editform2으로 업데이트하지 않기 때문에HTML 양식 및 자바 스크립트 확인

function confirmation() { 
    var answer = confirm("Are you sure you wish to edit?") 
    if (answer) 
    { 
     window.location = "#editform2"; 
    } 
} 

그러나, 자바 스크립트가 제대로 실행됩니다. 그러나 양식은 여전히 ​​제출됩니다. 페이지를 새로 고치는 것 같습니다. 다음은 양식에서 관련 부분입니다 :

//Form is encoded in PHP 
<form method=\"post\"> 
//Form is in here 
<input type=\"submit\" value=\"Edit\" onclick=\"confirmation()\"> 

그래서 형태가가는 어디에 모르고, 그냥 페이지를 새로 고침, 페이지뿐만 아니라 프로세서로 발생합니다. 취소를 클릭해도 자바 스크립트는 동일한 페이지에 보관해야합니다. 프로세싱을 다른 페이지로 이동하는 것 외에 내 솔루션은 무엇입니까?

답변

6

엄밀한 버튼이기 때문에 모든 경우에 양식이 제출됩니다. 폼에 ID를 지정하고 입력 유형 변경 :

<form method="post" id="formid"> 
<input type="button" value="Edit" onclick="confirmation()"> 

및 클릭 할 때이 함수를 호출 : 제출 버튼의 onclick 이벤트를 사용하지 마십시오

function confirmation() { 
    var answer = confirm("Are you sure you wish to edit?") 
    if (answer) 
    { 
     document.getElementById("formid").submit(); 
    } 
} 
+0

양식이 모든 경우에 제출되지 않습니다. 메서드가 false를 반환하면 양식이 제출되지 않습니다 ... – Robban

1

시도 :

return answer; 
함수의 끝에

과의 onclick 방법이를 반환해야합니다. 이렇게 :

<input type="submit" value="Edit" onclick="return confirmation()"> 

이렇게하면 함수가 false를 반환하고 양식이 게시되지 않습니다.

4

을의 태그의 onsubmit 이벤트를 사용 귀하의 양식 :

document.forms[0].onsubmit = function() { 
    return confirm("Are you sure you wish to edit?"); 
} 

양식에 식별 할 수있는 id 속성을 추가 할 수 있습니다.

JavaScript 코드에서 이벤트 바인딩 유지; HTML의 인라인 속성이 아니기 때문에 코드를보다 maintanable하고 쉽게 디버깅 할 수 있습니다.

+0

+1,'document.forms [0]'은 훌륭한 유지 관리 솔루션이 아닙니다. 양식에 이름이나 ID를 부여하는 것이 좋습니다. – nickf

+0

감사합니다. 예를 들면, ID를 추가하는 것이 좋습니다. – CMS