とあるフォームにて、フォームの内容が変更されたら「送信」ボタンを画面下部に固定表示させるjavascript[form.js」を作成してます。
js
1jQuery(function(){ 2 3 //値が入っていれば抽出ボタンをフッターに固定 4 function formChange(){ 5 6 let flag = true; 7 8 //ひとまずinput[type="text"]をチェック 9 jQuery('input[type="text"]').each(function(e) { 10 if (jQuery(':text').eq(e).val() != "") { 11 flag = false; 12 } 13 }); 14 15 if (flag) {//trueの時はメニュー消える 16 jQuery('#searchbtn-wrapper').removeClass('fixed'); 17 }else {//trueの時はメニューfixed 18 jQuery('#searchbtn-wrapper').addClass('fixed'); 19 } 20 }; 21 22 jQuery('form').on('change',function(){ 23 formChange(); 24 }); 25 formChange(); 26});
jQueryUIのdatepickerを使用している箇所が反応してくれなかったので別途クラスを付与し、下記の行を加えました。
js
1 jQuery('.has_dp').datepicker({ 2 onSelect: function(selectedDate){ 3 formChange(); 4 } 5 });
form.jsをいろいろと使いまわしていたところ、jQueryUIのdatepickerを読み込んでいないフォームもあり、エラーが出てしまいました。
form.js:XX Uncaught TypeError: jQuery(...).datepicker is not a function
関数が存在するか調べるtypeofというのを見つけて以下のようにしたところエラーは消えましたが、データピッカーが反応してくれません。
js
1 if(typeof datepicker == 'function){ 2 jQuery('.has_dp').datepicker({ 3 onSelect: function(selectedDate){ 4 formChange(); 5 } 6 }); 7 }
どう変更すればjQueryUIのdatepickerが存在する、しない、両方の環境で上手く動いてくれますでしょうか?
基本的なことかと思いますが、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。