2013-09-29 1 views
0

아무도 내가 두 번째로 열어서 닫히는 양식 내에서 대화 상자 (jquery 대화 상자 위젯)를 열려면 버튼을 놓으려는 이유를 알고 있습니까? 바깥에서도 잘 작동합니다.Jquery 대화 상자가 양식 요소 내에서 열린 채로 유지되지 않습니다.

내가 넣어 그래서 경우 :

<form> 
<button id="opener">open the dialog</button> 
</form> 
형태는 자신의 제출 버튼을 가지고 있지만 그것은, 양식을 제출 것으로 보인다

?

<button id="opener">open the dialog</button> 
<div id="dialog" title="Dialog Title">I'm a dialog</div> 
<script> 
$("#dialog").dialog({ autoOpen: false }); 
$("#opener").click(function() { 
$("#dialog").dialog("open"); 
}); 
</script> 

누군가 이러한 일이 발생하는 이유를 설명해주세요. 폼 요소 내의 버튼을 열면 왜 작동하지 않는지 이해 하기엔 너무 두껍습니다. :)

추신 : 나는 또한 형태의 외부 div를 넣어 봤지만 아무런 차이가 없습니다. 버튼이 폼 안에 있으면.

답변

1

이 때문에 사용하는 버튼 태그입니다. 버튼을 클릭 할 때마다 버튼이 양식 범위 안에 있으므로 양식이 제출됩니다.

HTML :

<form> 
<button id="opener" onclick="return showPopup()">open the dialog</button> 
</form> 

JS : - 그것을 시도했지만

function showPopup(){ 
//code to show your dialog 
return false 
} 
+0

대단히 고마워요 - 그게 ... :) 당신이 할 수 있다면 당신은 왜 그 onclick에서 수익의 목적이 환상적일까요? 다시 한번 감사드립니다. –

+1

양식 내에서 버튼 태그 (입력되지 않은 버튼 태그 만)를 클릭하면 양식이 제출됩니다. 그러나 버튼의 클릭 이벤트에 지정된 js 코드가있는 경우 양식을 제출하기 전에 먼저 js가 실행되고 양식이 제출됩니다. 이것은 귀하의 경우에 발생합니다. 호출 이벤트에 false를 반환하거나 위에서 설명한 것처럼 특정 조건을 수행하여 javascript 내에서 실행을 중지 할 수 있습니다. –

2

봅니다 아래와 같은 대화 상자를 연 후 클릭 핸들러에서 거짓을 반환합니다 :

$("#opener").click(function() { 
    $("#dialog").dialog("open"); 
    return false; 
}); 

이 문제를 해결해야한다.

1

버튼 기본 유형이 submit이므로 버튼을 클릭하면 항상 양식을 제출하고 페이지를 다시로드하기 때문입니다.

변경 버튼 유형과 양식을 제출하지 않습니다는 :

<form> 
    <button id="opener" type="button">open the dialog</button> 
</form> 
+0

가 답장을 보내 주셔서 감사 한 가지 방법은 입력 타입 버튼으로 버튼 태그를 변경하거나 사용하여 순수 JS 같은 시도하는 것입니다 아직도 양식 안에서 작동하지 않습니다. –

+0

물론 작동합니다 -> http://jsfiddle.net/GYsfx/ ??? – adeneo

관련 문제