Zebra_Dialog - 获取输入texbox值

时间:2016-01-22 14:43:38

标签: javascript jquery

我尝试将Zebra_Dialog模式窗口用作用户输入的小表单。但是,在检索文本框值时,每次都会返回一个空白字符串。这就是我用来创建弹出窗口的内容:

new $.Zebra_Dialog("<table><tr><td>Request ID:</td><td><input id='txtRequest' type='text' /></td></tr><tr><td>Request Title:</td><td><input id='txtTile' type='text' /></td></tr></table>", {
    'type': 'information',
    'title': 'Save Estimate',
    'buttons':
        [
            {
                caption: 'Submit', callback: function () {
                    UploadToDB();
                    return false;
                }
            },
            {
                caption: 'Cancel', callback: function () {
                }
            }
        ]
});

UploadToDB方法触发时,它会使用此代码从动态创建的文本框中获取值:

function UploadToDB() {
    var param = {
        requestID: document.getElementById("txtRequest").value,
        requestTitle: document.getElementById("txtTitle").value
    };
//Other code here.....
}

我还尝试了不同的变体,例如requestID: $("#txtRequest").val(),

每次虽然我得到一个空白的字符串。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我非常喜欢Zebra_Dialog,所以我编写了这些辅助函数。 zprompt()就是你想要的那个,让Zebra处理提示变得有点棘手,我无法让zprompt或zconfirm像同步Javascript函数一样提示或确认这是为什么他们有回调。 OP有同样的问题,即文本输入在闭包时消失,jquery无法获取其值,这就是我使用下面的老式onchange处理程序的原因。

function zalert(msg,title,type) {
  $.Zebra_Dialog(msg,"title":title||'Alert',"type":type||'error',"position":['center','top+50']});
}

function zconfirm(msg,title,okproc) {
    $.Zebra_Dialog(msg,{
        'type':     'question',
        'title':    title||'Confirm?',
        'position': ['center','top+50'],
        'buttons':  ['OK','Cancel'],
        'onClose':  function(caption) {
                       if (caption=="OK")
                          okproc();
                    }
    });
}

var zprompt_value='';
function zprompt(msg,deftxt,title,okproc) {
   var len=deftxt.length;
   var wd=len*10;
   if (wd<220) wd=300;
   var size=len || 24;
   $.Zebra_Dialog(msg,{
       'title':    title||'Confirm?',
       'message':  msg+"<br><input type=text onchange='zprompt_value=this.value' value='"+deftxt+"' size="+size+">",
       'width':    wd,
       'position': ['center','top+50'],
       'buttons':  ['OK','Cancel'],
       'onClose':  function(caption) {
                      if (caption=="OK")
                         okproc(zprompt_value);
                   }
});

以下是一些如何调用它们的示例:

zalert("Big mistake!","Report","error");

zconfirm("Are you sure you want to format the drive?","Confirm?",function(){
    format_drive();  //  Ack!
});

zprompt("Enter a funny nickname:","(nickname)","Nickname",function(n){
    set_nickname(n); 
});

希望对某人有所帮助,大部分时间花了大半个时间来解决这个问题!如果有更好的方法,请告诉我。

SSF