2011-12-05 22 views
0

我有沒有處理頁面刷新一種形式,它的偉大工程,保存到數據庫等等提交表單無刷新頁面 - 點擊功能切換()後不工作提交

但一旦我已提交表單的點擊下面的函數不再切換,除非我刷新頁面。

$("#pinlink").click(function() { 
     $("#pincontent").toggle(); 
}); 

下面是代碼:

echo'<strong>Printer PIN:</strong>&nbsp;<a id="pinlink"><img src="images/edit.png" width="18px" height="18px" title="Edit you PIN number"></a> 

<div id="results"><div> 

<div id="pinnumber">'.$learner->idnumber.'<div>     

<div id="pincontent" style="display:none;"> 
<form name="myform" id="myform" method="POST" enctype="multipart/form-data"> 
<input type="text" name="idnumber" id="idnumber" placeholder="Enter your new PIN" size="20" value=""/> 
<input name="id" type="hidden" value="'.$learner->id.'" />  
<input type="submit" name="submit" value="Update"> 
</form> 
<div>'; 


$(document).ready(function(){ 

    $("#pinlink").click(function() { 
    $("#pincontent").toggle(); 
    }); 

    $("#myform").validate({ 
     debug: false, 
     rules: { 
      idnumber: "required", 
     }, 
     messages: { 
      idnumber: "Please enter your PIN", 
     }, 
     submitHandler: function(form) { 
      $("#pincontent").hide(); 
      // do other stuff for a valid form 
      $.post('process.php', $("#myform").serialize(), function(data) { 
       $('#results').html(data); 
      }); 
     } 
    }); 
}); 

任何幫助將不勝感激。

回答

1

好的,我發現錯誤,你忘了正確關閉div。 (在結果的div和pinnumber)

它應該工作:

echo'<strong>Printer PIN:</strong>&nbsp;<a id="pinlink"><img src="images/edit.png" width="18px" height="18px" title="Edit you PIN number"></a> 

<div id="results"></div> 

<div id="pinnumber">'.$learner->idnumber.'</div>     

<div id="pincontent" style="display:none;"> 
<form name="myform" id="myform" method="POST" enctype="multipart/form-data"> 
<input type="text" name="idnumber" id="idnumber" placeholder="Enter your new PIN" size="20" value=""/> 
<input name="id" type="hidden" value="'.$learner->id.'" />  
<input type="submit" name="submit" value="Update"> 
</form> 
<div>'; 


$(document).ready(function(){ 

    $("#pinlink").click(function() { 
    $("#pincontent").toggle(); 
    }); 

    $("#myform").validate({ 
     debug: false, 
     rules: { 
      idnumber: "required", 
     }, 
     messages: { 
      idnumber: "Please enter your PIN", 
     }, 
     submitHandler: function(form) { 
      $("#pincontent").hide(); 
      // do other stuff for a valid form 
      $.post('process.php', $("#myform").serialize(), function(data) { 
       $('#results').html(data); 
      }); 
     } 
    }); 
}); 
+0

我覺得很愚蠢。非常感謝你,我應該學會更多地睡覺。 – Codded

+1

別擔心:)匈牙利有一句諺語:只有那個人不會犯錯誤,誰不工作:)(通常情況下,我作爲一名PHP開發人員工作了4年,但有時候我也有同樣的感覺錯誤) – tildy

+0

另外我真的建議,以避免在PHP中使用HTML代碼。 HTML代碼的位置是模板。 – tildy

0

你可以升級到最新版本的jQuery嗎?我想知道新的on()方法是否會更好,而不是click()..?

用途:

$("#pinlink").on("click", function() { }); 

或者更好:

$(document).on("click", "#pinlink", function() { }); 

這第二種形式是利用一種叫做事件委託,可能在這種情況下幫助的單擊處理程序似乎已成爲綁定後AJAX響應...

如果無法升級,請嘗試使用delegate()方法代替:

$(document).delegate("click", "#pinlink", function() { }); 
+0

喜,不能讓你的任何實例工作。即時通訊使用。他們都按我的問題描述的工作但是,一旦我提交表單,點擊功能仍然不會切換,除非我刷新頁面。 – Codded

0

你試過綁定了嗎?

$("#pinlink").bind('click', function() { 
    $("#pincontent").toggle(); 
    }); 
+0

你好,不能讓你的例子工作。它的工作原理與我的問題中所述但是,一旦我提交表單,點擊功能仍然不會切換,除非我刷新頁面 – Codded