2011-03-30 156 views
3

延长提示()对象要确保这个问题更加清晰,是否有可能在Javascript

我想是因为我想在同以从用户那里获取两个变量来重新实现JavaScript中的提示对象时间。

如果可以扩展,重新实现或覆盖此对象,请告诉我如何。如果不是,你有更好的解决方案吗?

谢谢。

+0

不,创建您自己的对话框:) – 2011-03-30 12:35:31

回答

3

你应该使用类似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); 
    } 
    }); 
} 

或者如果你坚持重写内置函数,你可以d o像这样的东西(这是因为我没有使用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) 
+0

这是假设如何工作? 'window.prompt'与jQuer UI有什么关系?我认为重写'window.prompt'不是一个好主意。 – 2011-03-30 12:36:48

+0

@Felix,请参阅更新 – mplungjan 2011-03-30 13:20:11

+0

窗口提示太大,我可以修复它吗?如果我可以如何? – 2011-03-31 10:27:29

2

您可以让它们使用分隔符分隔两个不同的值。

var result = prompt('enter two values seperated by a comma').split(','); 
alert('first value: ' + result[0]); 
alert('second value: ' + result[1]); 

DEMO

+0

谢谢,但这影响了可用性,因此我不喜欢这个 – 2011-03-31 11:02:48

1

你可以重新定义大多数事情在JavaScript中,其中包括窗口提示,预警和确认方法,但它可能会是一个更好的主意来定义的方法,并调用代替的本地对象。例如,定义“提示器”,“警报器”或“确认器”方法。

+0

我不明白你实际上可以给一个重新定义的例子提示 – 2011-03-31 10:24:16