2011-03-20 61 views
1

按下鏈接時沒有啓動對話框窗口,你能看到我的JS/HTML代碼有什麼問題嗎?爲什麼這個jQuery對話框不工作?

謝謝。

http://jsfiddle.net/LtQnT/

+0

請張貼是給你的代碼的簡短片段一個問題在這裏,並描述1.它做了什麼,2.你期望它做什麼,3.你已經試圖做的工作。當你在這裏更新問題標題 - 「不工作」是沒有用的。 – Mat 2011-03-20 16:05:00

+0

@Mat - 你打擾了看jsFiddle的代碼嗎?無論如何,我編輯了我的問題。 – 2011-03-20 16:06:41

+0

似乎是jsfiddle中的錯誤。即使簡單的警報不起作用... – 2011-03-20 16:07:14

回答

1

你有<a href="javascript:forgotPassword();">forgotPassword函數裏面$(document).ready定義。爲了使它工作,你需要或者移動定義forgotPasswordready的或做類似

<a id='my_link' href='javascript:void(0)'>Forgot</a> 
$(document).ready(function() { 
.... 
    $("#my_link").click(function(e){ 
$("#forgot-dialog").dialog("open"); 
}); 
+3

'href ='javascript:void(0)''?人們應該真的開始停止使用這樣的廢話。 'e.preventDefault();'是要走的路(並且或者使用'href =「#」'或者指向那些禁用了JavaScript的人的頁面) – ThiefMaster 2011-03-20 16:17:44

1

有與你撥弄了幾個問題。

首先,你沒有包含jQuery UI作爲庫,所以顯然你的代碼會失敗。您還需要包含CSS。有還有,我固定的一些範圍有關的問題,併發布瞭解決方案

http://jsfiddle.net/jomanlk/LtQnT/11/

$(document).ready(function() { 
    $('#theLink').click(function(){ 
       $("#forgot-dialog").dialog("open");  
    }); 

    $("#forgot-dialog").dialog({ 
      modal: true, 
      autoOpen: false, 
      height: 255, 
      width: 300, 
      buttons: { 
       "Retrieve": function() { 
        document.forms["forgotform"].submit(); 
       }, 
       Cancel: function() { 
        $(this).dialog("close"); 
       } 
      }, 
    }); 
}); 
+0

哈,我們發佈了完全相同的解決方案。 – Blender 2011-03-20 16:16:29

+0

哈哈是真的,我想只有一個正確的答案! +1給你,先生! – JohnP 2011-03-20 17:05:57

+0

用於寫入非亂碼英語的+1。 – Blender 2011-03-20 18:00:50

5

我調整你的代碼一點點,所以現在的工作:

的JavaScript:

$('#forgot').click(function() { 
     $("#forgot-dialog").dialog("open"); 
}); 

$(document).ready(function() { 
    $("#forgot-dialog").dialog({ 
      modal: true, 
      autoOpen: false, 
      height: 255, 
      width: 300, 
      buttons: { 
       "Retrieve": function() { 
        document.forms["forgotform"].submit(); 
       }, 
       Cancel: function() { 
        $(this).dialog("close"); 
       } 
      }, 
    }); 
}); 

HTML:

<a href="#" id="forgot">Forgot?</a> 

<div id="forgot-dialog" style="display:none;" title="Reset your password"> 
<form id="forgotform" action="/forgotPassword.php" method="post"> 
<label for="forgot_email">Email</label> 
<input type="text" name="forgot_email" id="forgot_email" class="text ui-widget-content ui-corner-all" value="<?= $fb_email ?>" /> 
</form> 
</div> 

這是一個工作演示:http://jsfiddle.net/HxbTY/

你不包括jQuery UI,因爲dialog()是jQuery UI的一部分,而不是jQuery。

我不知道爲什麼該功能沒有觸發(可能是一個jsFiddle.net錯誤),但我添加了一個click()處理程序的鏈接,使其工作。

+0

用於提出正確和完整的答案:) – JohnP 2011-03-20 17:08:11

0

您正在將forgotPassword()函數定義在匿名範圍中,這是件好事。但是,內聯Javascript--這是一件壞事 - 無法再訪問它了。

使用此代碼來代替:<a href="#" id="forgotPasswordLink">Forgot?</a>

在你的準備代碼:$('#forgotPasswordLink').click(forgotPassword); - 合併這兩個獨立的$(document).ready()功能雖然單一的一個:http://jsfiddle.net/ThiefMaster/LtQnT/13/