下記の通りにhtmlで書いてブラウザで開くと、
テキストボックスをクリックしたところでdatepickerが現れて正しく操作する事ができます。
これをinnerHTMLで動的に実現したいのですが上手く行きません。
【成功例】
<script type="text/javascript">
$(function() {
$("#pickdate").datepicker({
showButtonPanel: true,
minDate:0
});
</javascript>
:
<div><input type=text id=pickdate></div>
【動かない例】
<script type="text/javascript">
$(function() {
$("#pickdate").datepicker({
showButtonPanel: true,
minDate:0
});
function test(){
var input_tex = '<div><input type=text id=pickdate></div>';
document.getElementById("embed").innerHTML = input_tex;
}
</javascript>
:
<SPAN ID="embed"></SPAN>
<input type=button onclick="test()">
配置したボタンをクリックするとdatepickerを呼び出すテキストボックスが動的に挿入されます。
しかし、テキストボックスをクリックしてもdatepickerがでてきません。
つまり、HTMLに直打ちしたときには上手く動作するのに
innerHTMLで動的に挿入したHTMLを実行しようとすると上手く実行できません。
innerHTMLで挿入したHTMLではidを評価しないのでは?と思っています。
ご教示下さい。
多分、こう。
function test(){ var input_tex = '<div><input type=text id=pickdate></div>'; document.getElementById("embed").innerHTML = input_tex; $(function() { $("#pickdate").datepicker({ showButtonPanel: true, minDate:0 }); }
$(function () {;});
つまりjQuery(function () {;});
はDOM構築時に発火されます。
その時点ではまだページにid="pickdate"の要素は存在しないため、エラーとなります。
test()関数内でid="pickdate"の要素を作成後に、datepickerを当てる処理を移せば動きます。
function test(){ var input_tex = '<div><input type=text id=pickdate></div>'; document.getElementById("embed").innerHTML = input_tex; $(function() { $("#pickdate").datepicker({ showButtonPanel: true, minDate:0 }); }); }
できました!ありがとうございます!
できました!ありがとうございます!