0

私はライブラリ BootstrapDialog を使用しています。私のページには次のような入力フィールドがあります。

<div id="divtoload" style="display: none;">     
    <div align="center">
        <table>
            <tr>
                <td align="left" width="100px">input:</td>
                <td align="left"><input id="inputText" name="inputText" type="text"/></td>
            </tr>
        </table>
    </div>
</div>

私が持っている同じページに:

$("#link").click(function()   { 
    var element = $('<div></div>').load('index.html #divtoload', function() {
        element.find('#divtoload').show();
    }); 

    BootstrapDialog.show({
            title: 'Recovery',
            message: element,
            buttons: [{
                label: 'Send',
                cssClass: 'btn-primary',
                action: function(){
                    console.log($("#inputText").val());
                 }
            }]

    })
})

しかし、console.log には、inputText が定義されていないと書かれています。

4

2 に答える 2

0

問題が解決しました!

奇妙なことが起こっていました.BootstrapDialogは私が定義したdivを使用していませんでしたが、そのコピーを使用していました.

于 2016-10-17T12:09:01.910 に答える
0

JQuery の「load」メソッドは非同期です。つまり、JS は BootstrapDialog コードを実行する前に、それが完了するのを待ちません。したがって、ダイアログを作成する前に HTML を返してロードすることはありません。

コールバック内にダイアログ コードを配置すると、修正されるはずです。

$("#link").click(function()   { 
var element = $('<div></div>').load('index.html #divtoload', function() {
    element.find('#divtoload').show();

    BootstrapDialog.show({
            title: 'Recovery',
            message: element,
            buttons: [{
                label: 'Send',
                cssClass: 'btn-primary',
                action: function(){
                    console.log($("#inputText").val());
                 }
            }]

    })


}); 

};
于 2016-10-17T10:29:52.387 に答える