2009-11-09 66 views
30

當用戶點擊「刪除數據」按鈕時,顯示一個JavaScript確認框。我顯示它,如本圖所示:JavaScript:如何在確認框中默認選擇「取消」?

alt text

在圖像中,「OK」按鈕被默認選中。我想在默認情況下選擇「取消」按鈕,這樣如果用戶不小心按下輸入鍵,記錄將是安全的並且不會被刪除。

默認情況下,JavaScript中是否有任何方式選擇「取消」按鈕?

+7

恕我直言,你不應該在對話框中使用確定/取消或是/否按鈕。更好地創建HTML自己的對話框,並有按鈕,上面寫着「刪除數據」和「中止刪除」。這樣用戶不必閱讀長文本,只有按鈕。也就是說,總是在按鈕的標籤中包含一個動詞。 –

+2

@新月:它是你的選擇,你可以在你的應用程序中自由使用這種類型的東西。我不感興趣,謝謝。 – Prashant

+0

@Markus,是的,它總是更好地使用自定義消息框,但我只是想知道是否有任何方法來設置默認按鈕在正常的JavaScript確認框。 – Prashant

回答

10

如果你可以使用那麼這裏的jQuery插件是一個很好的一個

jQuery Impromptu

要更改默認集中按鈕:

$.prompt('Example 4',{ buttons: { Ok: true, Cancel: false }, focus: 1 }); 
+0

反對的任何理由? – rahul

+0

該解決方案的一個微妙問題是它打破了平臺UI慣例:雖然Windows在Cancel之前放好,但大多數其他圖形操作系統的順序卻顛倒過來。可能不是一個巨大的交易:) – Nick

4

我不認爲你可以這樣做。

但是你可以通過強制用戶在輸入框中鍵入「Y」無疑使它更難用戶不小心「同意」與確認,例如:

agree = (prompt("Type 'y' to accept", '') == 'y'); 
+4

-1 JavaScript'提示符'是魔鬼。 –

+2

@ josh-你能解釋一下嗎? – Yarin

+0

@Yarin瀏覽器有顯式禁用這些提示的設置/選項。說夠了。 –

9

你不能這樣做,但是你可以使用/編寫自己的對話框,使用DOM元素顯示(比如phoenix建議的,它不一定是那個特定的jQuery插件,你可以自己編寫或使用從另一個JS框架插件)。

「使用jQuery +插件X」的答案開始變得煩人。有很多JS庫和更多的插件。例如,如果您只想顯示自定義對話框,則不需要使用任何JS庫。儘管這是一個快速的解決方案/答案,但從長遠來看,這樣的答案會造成更大的傷害,然後是好的。新入門的JavaScript或編程人員開始認爲jQuery和/或插件是唯一的出路,他們包括50kb +庫,只是爲了編寫自己的3行(有時甚至不使用庫:D)。

在我看來,Markus Johnsson的評論是最好的答案,這是一個遺憾,它不是作爲一個發佈。

+0

好吧,這幾乎是事實,但不要忘記,每個最近的瀏覽器都在其緩存中有jQuery。 – AbiusX

+2

@AbiusX,緩存不在不同的站點之間共享。瀏覽器也不能保存本地副本,因爲他們沒有辦法驗證''script type =「text/javascript」src =「jquery.js」>'實際上是jQuery。如我錯了請糾正我。 –

+0

+1用於避免不必要的插件 – Medorator