0

我正在尝试在模式窗口中选择输入字段的值。

function title()
{
  $('a.title_filestock').click(function(e) {
    e.preventDefault();
    var data   = $(this).children('img').attr('rel');
    var active = $(this).next('a.filestock_preview');
    var value  = active.text();
    new VayesModal('<label for=Display Name"><input id="'+data+'" type="text" size="12" value="'+$.trim(value)+'" />', { modal: true, modalOpacity: '.5', title: 'Type File Display Name', titleClass: 'anim warning', buttons: [{id: 0, label: 'Save', val: 'Y', btnClass: 'btn-success'}, {id: 1, label: 'Cancel', val: 'N', btnClass: 'btn-danger'}], callback: function(val) { if(val == 'Y') { alert($('input[id="'+data+'"]').val()); active.text('new string');  } else return false; }});
  });
}

title();

“新字符串”应该是$('input[id="'+data+'"]').val(),但它返回未定义。我可能会犯错?

4

2 回答 2

0

试试alert($('input[id="'+data+'"]').length)。它应该为零,因为我认为您的输入元素仍未加载到模式中并且您已经尝试访问它。

于 2012-08-08T08:23:48.593 回答
0

问题是,回调:函数(val){无权从函数title()访问本地“数据”变量(已定义)尝试警报(数据),这也将是未定义的。

试试 console.log($(this)) 会返回什么,因为这必须是任何父对象(可能是一些 ModalWindow 对象),也许你可以在其中添加“数据”变量并从回调中加载}

我没有在谷歌上找到任何现有的 VayesModal 库,所以我无法为您提供更多帮助。试试http://jqueryui.com/demos/dialog/#modal-form

小提示:$('input[id="'+data+'"]') 等于 $('input#"'+data)

编辑:找到它:) 删除模态窗口后调用回调,因此输入尚不存在。转到 messi.js,方法 Messi.prototype.hide(after) { 并移动 ""if (after) after.call(); "" 到 this.messi.animate...function 中的第一行,在 .remove() 之前 } 但请记住,您更改了插件源代码。(VayesModal 是梅西插件。)

于 2012-08-08T08:31:22.713 回答