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

問題は、その callback:function(val) { 関数 title() からローカルの "data" 変数 (定義済み) にアクセスできないことです。

console.log($(this)) が返すものを試してください。これは任意の親オブジェクト (おそらくいくつかの ModalWindow オブジェクト) である必要があり、おそらくこれに「データ」変数を追加して、コールバックからロードすることができます }

Google で既存の VayesModal ライブラリが見つからなかったため、これ以上お手伝いすることはできません。http://jqueryui.com/demos/dialog/#modal-form を試してください

ちょっとしたヒント: $('input[id="'+data+'"]') は $('input#"'+data) に等しい

編集:見つかりました:)モーダルウィンドウが削除された後にコールバックが呼び出されるため、入力はまだ存在しません。messi.js に移動し、メソッド Messi.prototype.hide(after) { を移動し、""if (after) after.call(); を移動します。"" to this.messi.animate...function, before .remove() } ただし、プラグインのソース コードを変更したことに注意してください。(VayesModal はメッシのプラグインです。)

于 2012-08-08T08:31:22.713 に答える