2015-09-16 42 views
0

我知道这个问题已经讨论了很多次了。 我试过所有给出的答案,但没有成功。一个窗体里面的jquery对话框只能用一次

里面一个长形的ID =“imprim”和名称=“imprim”,我用一个jQueryUI的对话框,给用户要打印的项目,通过按钮打开之间进行选择。

它工作正常,第一次单击该按钮时,但在第二次,叠加显示出来,并在页面冻结。

这里是我的jQuery代码,里面jQuery(document).ready(function($) ......

//init dialog 
var $print = $('#items_toprint').dialog({ 
      modal: true, 
      autoOpen: false, 
      resizable: false, 
      width: 500, 
      height: 500, 
      close: function() { 
       $(this).parent().appendTo("#imprim"); 
       $('#items_toprint').dialog('close'); 
      }, 
      buttons: { 
       VALIDER: function(p) { 
        p.preventDefault(); 
        $(this).parent().appendTo("#imprim"); 
        $(this).dialog('close'); 

       }} 
     }); 


//button action 

     $('#bttn_print').on("click", (function(e) { 
      e.preventDefault(); 
      $print.dialog('open'); 
     })); 
    }); 

和HTML(PHP产生的)代码:

print '<form method="post" id="imprim" name="imprim" action="imprime.php">'; 



    print '<div id="items_toprint" align="center" title = "Choix des graphes" style="display:none" >'; 
$sql1 = " SELECT p.id as criterid, p.code, p.libelle "; 
$sql1.= " FROM " . MAIN_DB_PREFIX . "c_param as p "; 
$sql1.= " WHERE p.active = 1"; 
$sql1.= " AND p.id IN (SELECT fk_parametre FROM " . MAIN_DB_PREFIX . 'patient_params WHERE fk_patient = ' . $patient->id . ")"; 
$sql1.= " order BY p.code"; 

$result1 = $db->query($sql1); 
$num = $db->num_rows($resql); 
if ($num >= 1) { 
print '<table class="noborder" width="450px" align="center">'; 
$categ_encours = ""; 
$der_categ = ""; 
while ($row = mysqli_fetch_assoc($result1)) 
    { 

    $categ_encours = $row[code]; 
    if ($categ_encours != $der_categ) 
     { 
     print '<tr>'; 
     print '<td width="300px" Style="color:#B40431" align= "center">'; 
     print $categ_encours; 
     print '</td>'; 
     print '<td>'; 
     print '&nbsp;'; 
     print '<td>'; 
     print '</tr>'; 
     $der_categ = $categ_encours; 
     } 
    print '<tr >'; 
    print '<td width="300px" class="titre_noir" align= "right">'; 
    print $row['libelle']; 
    print '</td>'; 
    print '<td align= "left">'; 
    print '<input type="checkbox" name ="graph_toprint[]" value="'.$row['criterid'].'" >'; 
    print '</td>'; 
    print '</tr>'; 
    } 
     print '<tr>'; 
print '<td class="titre" align="center">'; 
print "Tableau paramètres"; 
print '</td>'; 
print '<td align="left">'; 
print '<input type="checkbox" name="tableau_param[]" value="t_param" CHECKED = "checked">'; 
print '</td>'; 
print '</tr>'; 
    print '</table>'; 
} 

else { 

    print '<p align="center" font-color="red" ><b>'; 
    print "Vous ne suivez aucun critère pour ce patient !"; 
    print '</b></p>'; 


    } 

print '</div>'; 

回答

0

请与名PageEvents一个js调用函数中的document.ready此功能()

$(document).ready(function(){ 
PageEvents(); 
}); 



function PageEvents(){ 
    $('body').on("click","#bttn_print", function(e) { 
       e.preventDefault(); 
       $print.dialog('open'); 
      }); 
} 
+0

对不起,但它不工作。尽管“e.preventDefault()”,当按钮被点击时,表单被提交.... – Gerard13007

+0

你的按钮存在于表单中? –

+0

@ Gerard13007我编辑我的答案,请立即检查,你把一些额外的paranthesis ... –