【发布时间】:2011-03-30 12:32:18
【问题描述】:
为了确保问题更清楚,
我想在 JAVASCRIPT 中重新实现提示对象,因为我想同时从用户那里获取两个变量。
如果可以扩展、重新实现或覆盖此对象,请告诉我如何。如果没有,您有更好的解决方案吗?
谢谢。
【问题讨论】:
-
不,创建你自己的对话框:)
标签: javascript prompt
为了确保问题更清楚,
我想在 JAVASCRIPT 中重新实现提示对象,因为我想同时从用户那里获取两个变量。
如果可以扩展、重新实现或覆盖此对象,请告诉我如何。如果没有,您有更好的解决方案吗?
谢谢。
【问题讨论】:
标签: javascript prompt
你应该使用类似http://jqueryui.com/demos/dialog/#modal-form的东西
你需要在你有对话框的地方分割你的javascript
如果你有
function getAndUseUserInfo() {
bla1();
bla2();
var x = prompt("Gimme something for bla 3","");
if (x) bla3(x); // this will not be executed until user closes prompt
}
你现在需要
function getUserInfo() {
bla1();
bla2();
var x = "";
$( "#dialog-form" ).dialog({
autoOpen: false,
height: 300,
width: 350,
modal: true,
buttons: {
"OK": function() { x = $("#someIdFromtheForm").val(); $(this).dialog("close");}
"CANCEL": function() { $(this).dialog("close");}
}
close: function() {
if (x) bla3(x);
}
});
}
或者,如果您坚持要覆盖内置函数,您可以执行以下操作(由于我没有使用 html 页面,因此目前会出错):
var orgPrompt = window.prompt;
var varone, vartwo;
function saveVars(doc) {
varone = doc.getElementById("x").value;
vartwo = doc.getElementById("y").value
return [varone,vartwo];
}
window.prompt=function(one,two) {
var html = '<center><br><br>'+one+':<input type=text id=x><br>'+two+':<input type=text id=y><br><input type=button value=OK onclick=\'window.returnValue=window.dialogArguments.saveVars(document);window.close()\'/>';
var res = showModalDialog('javascript:"'+html+'"',window,"dialogWidth:100px;dialogHeight:100px");
}
x = prompt('first name','last name')
alert(x)
【讨论】:
window.prompt 与 jQuer UI 有什么关系?我认为覆盖window.prompt不是一个好主意。
您可以让它们使用分隔符分隔两个不同的值。
var result = prompt('enter two values seperated by a comma').split(',');
alert('first value: ' + result[0]);
alert('second value: ' + result[1]);
【讨论】:
您可以在 javascript 中重新定义大部分内容,包括窗口提示、警报和确认方法,但最好定义方法并调用 it 而不是原生对象。例如,定义 'prompter'、'alerter' 或 'confirmer' 方法。
【讨论】: