2011-03-08 41 views
0

我有一個電子郵件按鈕,點擊時,應該彈出一個模式jQuery UI對話框,顯示一個按鈕用於發送電子郵件。我的代碼是在這裏:試圖使模式對話框出現與jQuery和PHP

<input type="button" value="Email to me" onClick="$("#emailModal").dialog({title:'Email It Along',height:300,width:350,modal:true,resizable:false});"/> 

這裏是#emailModal

<div id="emailModal"> 
<p><input type="button" value="Email to me" onClick="$('#emailPost').submit()" id="emailJQButton"/></p> 
</div> 

然而,當我點擊按鈕,沒有任何反應,也沒有對話框彈出。我查看了我的所有代碼並找不到問題。任何幫助?

編輯: 發現了問題,但我有一還一:

if($_SESSION["loggedIn"] == 1) 
         { 
          echo "<form action='php/emailPost.php' method='POST' class='inline' id='emailPost'>"; 
          echo "<input type='hidden' value='" . $_SESSION["email"] . "' name='emailAddress'>"; 
          echo "<input type='button' value='Email To Me' onClick='$(\"#emailPost\").submit();$(\"#emailModal\").dialog('close');'/>"; 
          echo "<input type='hidden' name='passedCoupID' value='" . $coupID . "'/>"; 
          echo "</form>"; 
          echo "<h3>Or</h3>"; 
          echo "<form action='php/emailPost.php' method='POST' class='inline' id='emailPost2'>"; 
          echo "<input type='text' value='Enter an Email' name='emailAddress' style='display: inline-block;'>"; 
          echo "<input type='button' value='Email' onClick='$(\"#emailPost2\").submit();$(\"#emailModal\").dialog('close');'/>"; 
          echo "<input type='hidden' name='passedCoupID' value='" . $coupID . "'/>"; 
          echo "</form>"; 
         } 
         else 
         { 
          echo "<form action='php/emailPost.php' method='POST' class='inline' id='emailPost2'>"; 
          echo "<input type='text' value='Enter an Email' name='emailAddress' style='display: inline-block;'>"; 
          echo "<input type='button' value='Email' onClick='$(\"#emailPost2\").submit();$(\"#emailModal\").dialog('close');'/>"; 
          echo "<input type='hidden' name='passedCoupID' value='" . $coupID . "'/>"; 
          echo "</form>"; 
         } 

我用PHP顯示它現在回聲,我知道應該需要一些特殊的轉義規則。內聯函數雖然不起作用,但不是emailPost提交也不關閉對話框。

+0

您可以嘗試安裝Firebug(http://getfirebug.com/)並單步執行代碼。 –

回答

6

不能在屬性使用"如果它們與"引述了。使用'#emailModal'而不是"#emailModal"

然而,正確的解決辦法是這樣的:

<input type="button" value="Email to me" id="emailButton" /> 
<script type="text/javascript"> 
    $('#emailButton').click(function(e) { 
     e.preventDefault(); 
     $("#emailModal").dialog({title:'Email It Along', height:300, width:350, modal:true, resizable:false}); 
    }); 
</script> 
+1

+1用於非內聯onclick處理程序 –

1

您在代碼中有一個錯字(省略號)

onClick="$("#emailModal"). 

應該

onClick="$('#emailModal'). 
0

OTOH我認爲你應該使用

<input type="button" value="Email to me" onClick="$('#emailModal').dialog({title:'Email It Along',height:300,width:350,modal:true,resizable:false});"/> 

編輯

或者作爲ThiefMaster說嘗試在線路使用的東西的

$(function(){ 
    $('#myinput').click(function(){ 
     $('#emailModal').dialog({title:'Email It Along',height:300,width:350,modal:true,resizable:false}) 
    }); 
}); 
1

問題出在按鈕onClick上,雙引號內有雙引號。

onClick="$("#emailModal").dialog({... 

我建議你不要使用onClick和你使用jQuery綁定的事件,而不是。

<input type="button" value="Email to me" id="sendEmail" /> 

<div id="emailModal"> 
    <p><input type="button" value="Email to me" id="emailJQButton"/></p> 
</div> 

<script> 
    $(function(){ 
    $("#emailModal").dialog({ 
     title: 'Email It Along', 
     height: 300, 
     width: 350, 
     modal: true, 
     resizable: false, 
     autoOpen: false 
    }); 

    $('#sendEmail').click(function(){ 
     $("#emailModal").dialog('open'); 
    }); 

    $('#emailJQButton').click(function(){ 
     $('#emailPost').submit(); 
    }); 
    }); 
</script>