2012-03-22 11 views
0

私は複数ファイルのjquery phonegapアプリケーションを持っています。私はphonegap 1.4.1、jQuery 1.7.1、jQuery Mobile 1.1.0 RC1を使用していますjQueryのモバイルページのロードイベントがjavascriptの起動を2回委任しました

インデックスファイルの先頭には、「kkpage」というページのpageinitで起動するスクリプトブロックがあります。 ブロックは、フォームの提出と、「kkpage」上の要素の動的な隠蔽/表示を制御します。

提出が成功すると、別のページに転送され、フォームに再度記入するオプションが表示されます。

"kkpage"に戻ると、ページのスクリプトブロックが2回発射されたように見えます。送信ボタン( "#kkopendialog")を押すと確認ダイアログが開き、ユーザーは「はい」を押して、 2回

ユーザーがフォームを送信した後にコードを1回だけ実行するか、コードを削除/停止するにはどうすればよいですか?

私はアプリをナビゲートするchangepageを使用していると私はmobile.loadPage

を使用してページをプリロードしていデリゲートコード:私はここで周りを探してきた

$(document).delegate("#kkpage", "pageinit", function() { 
... 
}); 

、グーグルとチェックjQMのフォーラムに参加しましたが、私の解決策はありませんでした。 jqueryの.one、.die、および.unbindだけでなく、条件を使用してみましたが、役に立たないです。

ご協力いただきありがとうございます!

UPDATE:MORE以下のコード

インデックス:

$(document).delegate("#kkpage", "pageinit", function(event) { 
$("#klinikkurt #KKopendialog").click(BlurIt2);       
function BlurIt2() { 
$("#klinikkurt #q15").blur(); 
$("#klinikkurt #q16").blur(); 
} 
function SubKK(button) { 
if (button == 1){ 
$("#klinikkurt").submit(); 
} 
else if (button == 2){ 
} 
} 
function showConfirmKK(cdata) { 
navigator.notification.confirm(
'\304r du s\344ker p\345 att du vill skicka in din Kurtning?', // message 
SubKK,    // callback to invoke with index of button pressed 
'Skicka in?',   // title 
'Ja,Nej'   // buttonLabels 
); 
} 
$('#KKopendialog').addClass('ui-disabled'); 
$("#KKopendialog").live('tap', function(event) { 
showConfirmKK(); 
return false; 
}); 
$("#klinikkurt").submit(function(e) { 
$.mobile.showPageLoadingMsg(); 
var dataString = $("#klinikkurt").serialize(); 
$.ajax({ 
type: "POST", 
url: "http://DOMAIN.se/script/kurt2/receive.php", 
data: dataString, 
datatype: "html", 
success: function() { 
$.mobile.changePage("tackkk.html", { transition: "turn"}); 
window.plugins.googleAnalyticsPlugin.trackPageview("KKifyllt"); 
}}); 
e.preventDefault(); 
}); 
}); 

"kkpage" は、フォームだけでなく、送信ボタンが含まれています

<a href="#" id="KKopendialog" data-role="button">Skicka in</a> 

それは私が「didnの複数のページにありますので、どのようにjsfiddleそれを知っている

更新2:フォームhtmlとして要求:

<form id="klinikkurt" method="POST" target="result" ><input type="hidden" name="id" value="XXXX" /><input type="hidden" name="noframe" value="" /> 
       <h2>Placering/ort</h2> 

       <div class="questioncontainer"> 
        1.&#9;Placering<br /> 
        <select name="q1" id="q1" data-theme="d"> 
         <option value="null"> -- Välj alternativ -- </option> 
         <option id="24" value="24" >T9 Psykiatri</option> 
         <option id="25" value="25" >T9 Ögon</option> 
         <option id="26" value="26" >T9 Öron-näsa-hals</option> 
         <option id="27" value="27" >T10 Gynekologi</option> 
         <option id="28" value="28" >T10 Obstetrik</option> 
         <option id="29" value="29" >T10 Pediatrik</option> 
        </select><br /></div> 

       <div class="questioncontainer"> 
        2.&#9;Ort 
        <select name="q2" id="q2" data-theme="d"> 
         <option value="null"> -- Välj alternativ -- </option> 
         <option id="1" value="1" >Arvika</option> 
         <option id="2" value="2" >Avesta</option> 
         <option id="3" value="3" >Bollnäs</option> 
         <option id="4" value="4" >Enköping</option> 
         <option id="5" value="5" >Eskilstuna</option> 
         <option id="23" value="23" >Tierp</option> 
         <option id="24" value="24" >Uppsala</option> 
         <option id="25" value="25" >Visby</option> 
         <option id="26" value="26" >Västerås</option> 
         <option id="27" value="27" >Örebro</option> 
         <option id="28" value="28" >Östhammar</option> 
        </select><br /></div> 

       <div class="questioncontainer"> 
        <div class="fewq">9.</div><div class="moreq">10.</div>&#9;I vilken grad fick du själv aktivt handlägga patienter (t.ex. leda rond, resonera/diskutera/föreslå diagnoser/utredningar/behandlingar)? 
        <div class="popupright">I allra högsta grad</div> 
        <div class="popupleft" style="position:relative;bottom:-30px">Inte alls</div> 
        <div style="position:relative;top:-25px;;"> 
         <div data-role="fieldcontain"> 
          <fieldset data-role="controlgroup" data-type="horizontal"> 
           <legend>&nbsp;</legend> 
           <input type="radio" name="q11" id="1" value="1"/> 
           <label for="1"> &nbsp;</label> 

           <input type="radio" name="q11" id="2" value="2"/> 
           <label for="2">&nbsp;</label> 

           <input type="radio" name="q11" id="3" value="3" /> 
           <label for="3">&nbsp;</label> 

           <input type="radio" name="q11" id="4" value="4" /> 
           <label for="4">&nbsp;</label> 

           <input type="radio" name="q11" id="5" value="5" /> 
           <label for="5">&nbsp;</label> 

           <input type="radio" name="q11" id="6" value="6" /> 
           <label for="6">&nbsp;</label> 
          </fieldset> 
         </div> 
        </div> 
       </div> 

       <div id="kkreqmsg"><br><br>Oj då! Du kan tyvärr inte skicka in en kurtning utan att ange termin och placering!</div> 


       <a href="#" id="KKopendialog" data-role="button">Skicka in</a> 
      </form> 
+0

さらにコードを投稿するか、jsFiddleで問題を示すようにして、それで遊ぶことができます。あなたのコードは、あなたが使用しているjqueryとjquery mobileのバージョンのようなものを判断するのに役立ちます。 – codaniel

+0

それは複数のページにあるので、私はそれをどのようにjsfiddleするのか分からなかった。上記のいくつかの詳細といくつかのコードを追加しました。ありがとう! – Hessius

+0

あなたのフォームコードも表示するのはどうですか? – codaniel

答えて

1

私は私が働いているサイトには、クリックイベントなどpageintイベント委任されたために思い付いた解決策:

$('body').delegate('#page', 'pageinit' ,function(){ 
    $('#page').delegate(selector, 'click', function(e){...}); 
}); 

、これはあまりにもあなたのために働く希望を。

+0

1.0.1で作業しましたが、私のソリューションは1.1で壊れています。 更新:Worked!感謝万円! – Hessius

関連する問題