以下是该方案。我有一些可以即时生成的JavaScript代码。因此,我没有使用打开用于读取userinput的输入框的prompt()
,而是制作了一个自定义元素。因为我可以设置我的自定义输入框而不是使用正常的输入框。JavaScript中提示()的替代方法
因此,为了显示自定义输入框的功能是一样的东西,show_input()
和动态生成的代码,在使用eval()
年底执行。所以在代码中,在调用show_input()
函数之后,程序应该等待直到用户输入值并按下按钮(我自定义的输入表单中的按钮)。并且在生成的代码中会有多次调用此函数。
我不知道如何找到解决方案。也就是说,使其行为就像停止整个代码的执行一样。
我试过的是,在我们的自定义输入框中,使用一个布尔标志,当用户输入数值并按下按钮时,该布尔标志将被设置。所以,当我的show_input()
被调用时,它会显示自定义输入框,然后进入一个无限循环,只有当这个布尔标志设置时才会停止。但是这会冻结网页,使其无法响应。所以,这不是一个好的解决方案。
有没有什么办法模仿prompt()
函数的工作原理。我的意思是,暂停整个页面,直到用户按下按钮?
setTimeout()
函数在我的情况下不是一个好的选择。因为原因是,产生我的代码会是这个样子:
statement1;
statement2;
show_input(); //call the function to show my custom inputbox
statement3;
show_input();
statement4;
statement5;
// etc...
所以,statement2
后,函数调用是用于显示自定义输入框,要求用户输入的值,并按下一个按钮。只有按下此按钮后,才能转到statement3
。直到那时,它应该等待用户按下我的自定义输入框中的按钮。
我正在使用jQuery,并且该按钮有一个点击事件添加到它。
在运行时生成上面的代码中,使用eval()
任何想法,将高度赞赏执行。 谢谢
你所说的input()究竟是什么?这不是原生JavaScript。 – 2013-03-07 13:07:23
使用事件。这意味着你将不得不让你的代码更加安全。例如,调用'show_input()'后,你不应该有更多的代码“等待”。您的代码应该完成,并且一旦用户触发事件(OK按钮),您将执行另一个功能。 – TheBronx 2013-03-07 13:10:03
你最好的选择是使用[showModalDialog()](https://developer.mozilla.org/en-US/docs/DOM/window.showModalDialog),否则这对于JavaScript来说是不可能的。 – Teemu 2013-03-07 13:15:32