在样式化模式(jQuery UI)窗口中显示JS Alert

看下面的代码……这里有一个小提琴

我想用jQuery UI来设计它。 但是,我仍然可以调用此脚本,还是必须将其直接嵌入HTML页面?

这是表格……

目前,当您搜索PELL Grant Score时,会从另一个脚本调用alert()。

脚本是这样构建的……

 // Begin EFC Calculator for 2013-2014 function showpell_13_14(efc) { var pell; var ssg; var estpay; var monthpay; if (efc == 0) { pell = 5645; ssg = 0; estpay = -573; monthpay = 0; } else if (efc <= 100) { pell = 5595; ssg = 0; estpay = -523; monthpay = 0; } else if (efc <= 200) { pell = 5495; ssg = 0; estpay = -423; monthpay = 0; } 

…结果显示基于此…

 alert('Based on the 2013-2014 EFC you entered ('+efc+'), you may receive...' +' \n_________________________________________________________' +' \n-Tuition of 36 credits: $14,472' +' \n_________________________________________________________' +' \n-Direct Loan maximum for a Freshman* student: $9,405**' +' \n_________________________________________________________' +' \n-Potential PELL Grant Award: $'+pell+'.' +' \n_________________________________________________________' +' \n-Your estimated total out of pocket payment: $'+estpay+'.' +' \n_________________________________________________________' +' \n-Potential Student Success Grant: $'+ssg+'.' +' \n_________________________________________________________' +' \n-Your estimated monthly out of pocket payment: $'+monthpay+'.' +' \n...' // +' \nIf your student has $0 out of pocket, disregard the next few lines...' // +' \n_________________________________________________________' // +' \n-Your estimated monthly payment is calculated by...' // +' \n' // +' \nTaking your total out of pocket for the year ($'+estpay+')' // +' \nand subtracting your Student Success Grant ($'+ssg+') to get' // +' \n your overall payment which is then broken up over 9 months' // +' \nand comes to $'+monthpay+' per month.' +' \n_________________________________________________________' +' \n *Note: This is only configured for 1st year undergraduate students.' +' \n **Loan fees of 1% are included in the loan rates listed on this sheet.'); 

再次 –我想用jQuery UI来设计它。 但是,我仍然可以调用此脚本,还是必须将其直接嵌入HTML页面?

window.alert函数和jQuery UI对话不相关; 弹出窗口只是html。 切换到对话的最简单方法是执行以下操作:

  • 在你的HTML中放一个空白div
  • 使用jQuery UI初始化它,并将autoOpen设置为false
  • 而不是调用alert,将空白div的html替换为您将放入警报的内容,然后显示jQuery对话框。

在开始我的例子之前,我有一些一般的建议:不要在html标签中放置多个函数。 一般来说,尽量让你的JavaScript和你的html分开,因为它会让你(以及任何使用代码的人)生活更轻松。 而且由于你使用的是jQuery,最好通过使用.on()函数并以编程方式绑定函数来完全避免使用JavaScript内部的JavaScript。

所以我在你的小提琴上工作了一下,并使jQuery UI对话框正常工作。 我还从你的HTML中删除了所有的javascript。

第1-23行将函数绑定到表单的onsubmit,文本框的onfocus和onblur,并初始化jQuery UI对话框( 此处为 docs)。

从第504行开始,我修改了警报以使用jQuery UI对话框。 我这样做是通过将旧的警报文本设置为变量并用html换行符替换换行符,以便它们在对话框中正确显示。 然后我将内容插入对话框并打开对话框。

这是小提琴 。

如果这一切对您有意义,或者您有任何疑问,请告诉我:)

PS当你使用jQuery $('#pellscore').val()document.getElementById('pellscore').valuedocument.getElementById('pellscore').value ;)

更新

问题

所以这是你当前设置的问题:你正在使用(并依赖)一个荒谬的旧版本的reveal.js。 我的猜测是你用google搜索“jquery reveal”并且看到了这个链接到zurb的reveal.js版本 。 如果这就是你得到它的方式,(大多数情况下,如果你从其他地方得到它)你可能没注意到a)它在两年内没有更新,b)它使用jQuery 1.4.4,这是三岁,或c)声明不再更新的粗体通知。

无论哪种方式,您的页面中断的原因是因为jquery.reveal.js调用.live ,自jquery 1.7以来已弃用,并且从1.9开始被完全删除。

解决方案

我讨厌修补两年前的东西,但除非你想重写一堆代码并尝试集成当前版本的reveal.js ( 源代码 ),我推荐以下快速修复:

打开jquery.reveal.js,转到第20行,并将.live替换为.on ,例如来自

 $('a[data-reveal-id]').live('click', function(e) 

 $('a[data-reveal-id]').on('click', function(e) 

这应该可以解决你的问题。 我在当地尝试过它似乎工作。 请让我知道这对你有没有用 :)