2012-07-25 19 views
1
多頁我有jQuery的數據表插件的問題

工作聯繫......我填寫表格,並具體列有看起來像這樣的細胞:jQuery的數據表上的JavaScript不

<a href="26" name="PO">12</a> 

我有防止onclick事件,它觸發此代碼:

$('a[name="PO"]').click(function(){ 
      event.preventDefault(); 
      var POid = $(this).attr('href'); 
      var element = $(this); 
      $('<div id="Dialog">\ 
       <p class="error"></p>\ 
       <p style="text-align:center;" class="main">Entrez le P.O. associé à la commande</p>\ 
       <input type="text" class="POprompt"/>\ 
       </div>').dialog({ 
       resizable: false, 
       height: 'auto', 
       width:'400', 
       modal: true, 
       title: 'Ajout d\'un PO', 
       show: 'blind', 
       hide: 'drop', 
       buttons:{ 
        "Sauvegarder":function() { 
         $('.error').css('color','FF0000'); 
         var prompt = $('.POprompt').val(); 
         if (!isNaN(parseInt(prompt))) 
         { 
          $.post('setPO.php',{'PO':prompt,'id':POid},function(data) 
          { 
           element.text(prompt); 
           $('.main').css('color','#0F0'); 
           $('.POprompt').css('visible','false'); 
           $('.main').text("L\'ajout a été effectué avec succès.") 
           $(this).dialog("close"); 
           $('.error').text(""); 
           $('.error').css('color','#FFF'); 
          }); 
         } 
         else 
         { 
          var error = $('.error'); 

          error.text("Veuillez entrer des chiffres seulement."); 
          error.addClass("ui-state-highlight"); 
          setTimeout(function() { 
           error.removeClass("ui-state-highlight", 1500); 
          }, 1000); 
         } 
         $('.error').css('color','FF0000'); 
        }, 
        "Annuler":function() 
         { 
          $(this).dialog("close"); 
         }  
       } 
      }); 
     }); 

但是,當我去第2頁或3時,或者當我排序結果,並單擊該單元格鏈接,但在另一個頁面生成行比第一一,JavaScript不會觸發。

任何人有想法?先謝謝你們,祝你有美好的一天。

回答

2

我終於得到了一切,加入這個工作的罰款:

"bLengthChange": true, 

我的數據表聲明。

我還修改了<select>選項,添加了「顯示全部」選項,默認加載所有行,但僅在頁面加載中顯示5行,因爲我設置了"iDisplayLength": 5。 這裏是如何添加一個「顯示所有」價值,你的長度選擇輸入(總和):

$(document).ready(function(){ 
    $('table').dataTable({ 
     "bLengthChange":true, 
     "bFilter":true, 
     "iDisplayLength": 5, 
     "sDom":'<"H"lfr>t<"F"ip>', 
     "oLanguage":{ 
      "sUrl": "dataTables.txt" 
     } 
    }); 
}); 

文本文件包含所有的翻譯(如果需要的話),並自定義選擇:

{ 
    "sProcessing":  "Processing...", 
    "sLengthMenu": "Show <select><option value=-1>INFINITE</option></select> results" 
} 

注意:當然,我添加了其他選項到我的select AND datatable聲明中,這樣更容易閱讀。 value=-1部分是如何讓JavaScript加載所有行/單元格。

感謝那些試圖幫助我的人,您的答案對我有用!

2

因爲當JavaScript插入元素文檔它沒有onclick。 jQuery不會自動添加onclick。

解決方案:每當數據加載時(用戶更改頁面或排序表格時)調用此腳本。

3

我意識到這個問題已經得到解答,但是,這是不完整的,並且所有應有的尊重都可能是錯誤的。多頁數據表的問題在於,初始選擇器在用戶點擊除默認第一頁之外的任何頁面時都是無用的。這是因爲dataTable爲了渲染表格而對DOM做了一些可怕的事情。這有禁用您的點擊處理程序的副作用。

好消息是,除了列出所有元素之外,還有一種處理方法。

的,而不是...

$('a[name="PO"]').click(function(){

試試這個:

$("#dataTable tbody").on('click', 'a[name="PO"]', function(){

閱讀這個jQuery頁面(on()),並尋求延期選擇的部分。