2010-06-22 2 views
3

javascript/jquery로 양식을 제출 중입니다.자바 스크립트를 통해 제출할 때 chrome/safari (webkit?) 값을 게시하지 않습니다. .submit()

$("#myform").submit(); 

Firefox에서는 제대로 작동하지만 Safari 나 Chrome에서는 아무 양식 값도 게시되지 않습니다.

$ _POST 변수를 확인하면 Firefox에서 올바르게 채워지지만 safari/chrome에서는 $ _POST 값이 비어 있습니다.

대화 상자의 OK buttong 클릭 도착했을 때이 같은 제출이

$("form#form_add_file_to_theme").submit(); 

이 내 형태 (FF에서 잘 작동)

<div id="modal_create_themefile" style="display:none;">   
    <form action="" id="form_add_file_to_theme" name="form_add_file_to_theme" method="post">    
     <div class="field"> 
      <label for="var_template_name">File name</label> 
      <input type="text" class="text" id="var_template_name" name="var_template_name" /> 
     </div> 

     <div class="field"> 
      <label for="var_template_type">File type</label> 
      <select id="var_template_type" name="var_template_type"> 
       <option value="css">CSS</option> 
       <option value="include">Partial</option> 
       <option value="js">Javascript</option> 
      </select> 
     </div> 
    </form>     
</div> 

(주변 DIV는 .jQuery UI 대화가된다) PHP에서 $ _POST를 인쇄하여 제공합니다

Array ([var_template_name] => [var_template_type] => css) 

그래서 선택 상자가 제출됩니다 아닌 텍스트 필드 ...

업데이트 : : 텍스트 필드에 하드 코딩 된 value = "test"옵션을 전달하면 제출됩니다. 그러나 페이지가로드 된 후 값을 변경하면 (정상적인 사용자가하는 것처럼) 웹킷에는 아무런 영향을 미치지 않습니다. Chrome & Safari는 제출할 "초기"또는 "기본"값만 사용합니다.

+0

후 일부 코드 친구 – Starx

+0

입니다. –

+0

코드를 – Jorre

답변

2

감사합니다. 내 문제에 대한 해결책을 찾았습니다.

jQuery UI 대화 상자는 양식을 대화 상자로 만들거나 이동시키는 반면 Webkit에서는이를 알지 못합니다. Webkit은 원본 양식 코드를 가져 와서 제출합니다.

나는이 작업을 수행하여 문제를 해결할 수 :

dialog.data("dialog").uiDialog.find("form").submit(); 

그런 식으로, 어떤 브라우저가 아닌 페이지에서, 대화 상자에서 올바른 양식을 찾아 강제로.

2

서버에 도달하는 POST 데이터에 "var_template_name"이라는 항목이 있기 때문에 텍스트 상자가 게시물에 포함되어 있지만 값은 비어 있음을 의미합니다.

그래서 어떤 식 으로든 값은 게시되기 전에 지워집니다.

양식의 내용을 확인하는 자바 스크립트가 있습니까? 실수로이 같은 과제, 뭔가를하지 않았는지 확인 :

if (document.getElementById('var_template_name').value = '') 

을 대신 비교 : 당신의 도움들에 대한

if (document.getElementById('var_template_name').value == '') 
+0

으로 업데이트하면 Firefox가 작동하지 않을 수도 있지만 그렇지 않습니다. Firefox는이 코드를 완벽하게 작동합니다. + 모든 검사가 정확합니다 : if (templateDescription == "") – Jorre

+0

새로운 정보로 내 질문을 업데이트했습니다. – Jorre

+0

@Jorre : 표시된 코드에 이상한 부분이 없습니다. . 양식이 스타일로 숨겨져 있습니다. 어떻게 표시합니까? 양식을 게시하는 코드를 더 많이 표시 할 수 있습니까? 이 코드가 실행되는 이유는 무엇입니까? – Guffa

0

동일한 문제가 발생했습니다. 페이지가 변경되면 양식 제출이 종료된다는 이론이 있으므로 불완전 해집니다. 웹킷 내부를 분석하지 않으면 이론에 불과합니다.

내 솔루션 - 양식 제출 대신 ajax를 사용하십시오.

$ .post ("/ submit_url", $ ("# form_id")).serialize());

저는 전략이 항상 효과가 있다는 것을 확신하지는 않지만 실제로 그렇게 할 수는 있습니다.

0

비슷한 문제가 발생했습니다. 몇 시간 동안 고생하고 올바르게 작동시키는 법을 발견했습니다. 수정 된 내용은 대화 상자 html입니다. 처음에는 "interest-edit-dialog"div 외부에 오프닝 양식 태그가있었습니다. 대화 상자는 입력 변수를 게시하지 않았습니다. Jorre에서 영감을 얻었으며 대화 상자가 열렸을 때 Chrome 도구로 소스를 확인한 후 시작 태그가 사라진 것을 발견했습니다. 그래서 "interest-edit-dialog"div 안에 opening form 태그를 옮겼습니다. 그것은 기본적입니다. 입력 변수가 제대로 게시되었습니다. 즉, jquery.ui로 등록한 대화 상자 html 외부에 양식 태그를 넣을 수 없습니다. 폼 위에 제출

<div style="display: none; z-index: 1000; outline-width: 0px; outline-style: initial; outline-color: initial; position: absolute; " class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable" tabindex="-1" role="dialog" aria-labelledby="ui-dialog-title-dialog-form"> 
    <div id="interest-edit-dialog" title="whatever" class="ui-dialog-content ui-widget-content"> 
    <form id="interestDialogForm" name="interestDialogForm" action="einterest" method="post" enctype="multipart/form-data"> 
    <p class="validateTips"></p> 
    <fieldset> 
    <?php echo $interest_list; ?> 
    <p><input type="text" id="myinterest1" class="myinterest1" name="myinterest1" value="FOO" /></p> 
    <p><input type="text" id="myinterest2" class="myinterest2" name="myinterest2" value="BAR" /></p> 
    <p><input type="text" id="myinterest3" class="myinterest3" name="myinterest3" value="" /></p> 
    <p><input type="text" id="myinterest4" class="myinterest4" name="myinterest4" value="" /></p> 
    <p><input type="text" id="myinterest5" class="myinterest5" name="myinterest5" value="" /></p> 
    <input type="hidden" name="serial" id="serial" value="" /> 
    </fieldset> 
    </form> 
    </div> 
    <div class="ui-dialog-buttonpane ui-helper-clearfix"> 
    </div> 
</div> 

자바 스크립트 코드는 HTML 양식에 대한 코드를 게시하시기 바랍니다

$("#interestDialogForm").submit(); 
관련 문제