如何用jquery对话框替换javascript警报(弹出事件所在的位置)?

时间:2011-10-09 10:02:43

标签: javascript jquery html css

研究员,我打算把它分解得更清楚一些。当我看到那些JQuery UI的东西时,我对我需要下载的内容以及放置文件的位置感到困惑。

我成功做的就是链接到JQuery网站,这样我就不必下载任何东西,看到对话框有效。

但是,从我显示的示例中,对话框链接到div。如果div位于屏幕顶部并且输入框位于底部,则div不会对我有所帮助。我在头文件中只有一个函数从多个文本框中调用。此功能包括带有消息的javascript alert()。

请告诉我,我需要在函数中键入的EXACT代码(我们称之为MyFunction()),无论MyFunction被调用,它都会弹出一条消息。

如果是javascript,我们在脚本的head部分中有:

<script type="text/javascript">

function digitsOnly(){
alert("Digits only, please");
}

</script>

在许多文本框中,我们有:

<input type="test/javascript" onkeydown="digitsOnly()" />

我需要一个漂亮的弹出框来替换javascript alert(); 除了弹出调用文本框旁边的消息之外,我不需要这样做。如果它是可拖动和可调整大小的,那将是最酷的事情。但就目前而言,我会对我提到的事情感到满意。

我一直在学习语言。我知道我最终也会学习JQuery。但如果可能的话,我今晚需要这样做。

詹姆斯

7 个答案:

答案 0 :(得分:9)

window.alert = function(message) {
    // put your dialog box launching code here.
}

答案 1 :(得分:7)

看看jQuery UI's dialog。这也不会替换默认的alert(),因此您应该检查代码并使用对话框实例替换对alert(...)的调用。

答案 2 :(得分:4)

Javascript的alert()函数先于其他任何函数运行,因此实际替换其默认行为很难(如果不是不可能)。但是,您可以轻松地创建自己的功能。而不是:

$('.clickable').click(function() {
  alert("Clicked.");
});

这样做:

$('.clickable').click(function() {
  $('.dialog').dialog({ 
    // options...
  });
});

你必须通过你的代码并用这个代替每个警报,但是,这不应该是一个很大的交易,特别是如果你使用像Textmate这样具有“搜索项目”功能的东西。

答案 3 :(得分:1)

蒂莫西的答案是可行的。之后查看我的评论以获得必要的补充。我复制并粘贴了Timothy Khouri的回答并附上我的评论:

  

“当然,我需要它弹出文本框所在的位置   找到......就像一个javascript警告框一样。“

     

我认为你的意思是,如果你要在中途向下滚动   页面,然后调用警报,它将以您当前为中心   查看端口(您在屏幕上看到的内容)......以及您想要的内容   新的prettied up对话框也是如此。

     

答案是 - “是”......是的,jQuery会将对话框置于正中   在您当前的视口,就像一个警报框一样。

     

您需要下载并引用主jQuery库以及ALSO   最新的jQueryUI库以及一个jQuery CSS主题。

     

那么它应该像以下一样简单:

$("<p>Yo, G Dog<p>").dialog({ modal: true });

所以蒂莫西的代码几乎完美无缺。我不得不做一些搞乱,直到我找到导致两个对话框打开的原因。谷歌搜索没有答案。只是实验帮助我看到插入对话框的每个HTML标签由于某种原因打开了自己的对话框。解决这个问题的方法是包含div中的所有HTML标记。现在甚至没有出现空白对话框。

如果您不知道我在说什么,请使用您自己的代码,看看会发生什么。那么,在括号内添加更多HTML标签。例如:

("<h3>Attention></h3><p>Yo, G Dog</p>").dialog({ modal: true });

最后,将h3和p放在div中,看看很酷的结果:

("<div><h3>Attention></h3><p>Yo, G Dog</p></div>").dialog({ modal: true });

后一段代码只显示一个对话框。 :)感谢您的回答!

詹姆斯

答案 4 :(得分:1)

试试这个:

$.extend({ alert: function (message, title) {
  $("<div></div>").dialog( {
    buttons: { "Ok": function () { $(this).dialog("close"); } },
    close: function (event, ui) { $(this).remove(); },
    resizable: false,
    title: title,
    modal: true
  }).text(message);
}
});

更多信息here;

答案 5 :(得分:0)

alert = function(a){ my_alert(a); }

答案 6 :(得分:0)

我花了大约100次阅读这个问题来理解你的意思

  

“当然,我需要弹出文本框所在的位置......就像javascript警告框一样。”

认为你的意思是,如果你要在页面的中途向下滚动,然后拨打alert,那么它会以你当前的View Port为中心(你在屏幕上看到的东西)...并且你想要这个新的漂亮的对话框做同样的事情。

答案是 - “是”......是的,jQuery会将对话框放在当前视口的中心,就像alert框一样。

您需要下载并引用主jQuery库 AND ALSO 最新的jQueryUI库 AND ALSO 一个jQuery CSS主题。

那么它应该像以下一样简单:

$("<p>Yo, G Dog<p>").dialog({ modal: true });