2016-11-24 5 views
0

値を持たない選択フィールドのツールチップを作成できるjqueryスクリプトを作成しようとしています。私の要件は、HTMLコードに属性 "data-toggle"、 "data-placment"および "title"を書き込まずに実行する必要があることを意味する、私のjsコードでツールチップを動的に作成する必要があるということです。空のフィールド用のブートストラップツールチップを動的に作成する

問題は、ブートストラップツールチップが動的に作成された属性を無視するように見えることです。私は手作業でhtmlコードにツールヒントの属性を書き込もうとしましたが、うまくいきましたが、一度コードを変更すると正しく動作しません。

ここまでは私のコードです。インデントが分かりにくい場合はご容赦ください。

jQuery(function() 
{ 
    jQuery('[id*=form_fields_]').each(function(index, value) 
    { 
     if (jQuery(this).prop("tagName") == "SELECT" && jQuery(this).val() == "") 
     { 
      jQuery(this).data('toggle', 'tooltip'); 
      jQuery(this).data('placement', 'right'); 
      jQuery(this).attr('title', 'Please select an item'); 
      jQuery(this).tooltip(
      { 
       container: 'body' 
      }); 
      jQuery(this).tooltip(); 
      jQuery(this).on("hidden.bs.tooltip", function() 
      { 
       jQuery(this).css("display", ""); 
       jQuery(this).tooltip('disable'); 
      }); 
     } 
    }); 
    jQuery('[data-toggle=tooltip]').tooltip('show'); 
}); 
+0

あなたはツールチップが追加された場合、要素を検査使用して、それをチェックする必要がありますか? – claudios

+0

チェックされ、ツールチップが追加されていません。問題は、ブートストラップのツールチップを初期化するために必要な属性を動的に追加したことです。上記のコードを、属性を追加する3行を削除して、手動でhtmlコードに配置してもらうことができます。 – Johji

+0

あなたは働くフィドルを追加できますか? Ikkunからの答えを見てください。私はあなたの問題に答えると思う。 – claudios

答えて

0
jQuery(function() 
{ 
    jQuery('[id*=form_fields_]').each(function() 
    { 
     if (jQuery(this).val().length <=0) 
     { 
      jQuery(this).data('toggle', 'tooltip'); 
      jQuery(this).data('placement', 'bottom'); 
      jQuery(this).attr('title', 'Please select an item'); 
      jQuery(this).tooltip(
      { 
       container: 'body' 
      }); 
     } 
     jQuery(this).keyup(function() 
     { 
       console.log(jQuery(this).val().length); 
      if (jQuery(this).val().length <=0) 
      { 
       jQuery(this).data('toggle', 'tooltip'); 
       jQuery(this).data('placement', 'bottom'); 
       jQuery(this).attr('title', 'Please select an item'); 
       jQuery(this).tooltip(
       { 
        container: 'body' 
       }); 
       if(jQuery(this).focus()){ 
        jQuery(this).tooltip(
        { 
         container: 'body' 
        }); 
       } 
      } 
      else 
      { 
       jQuery(this).tooltip('destroy');  
      } 
     }); 
    }); 
}); 

jsfiddle https://jsfiddle.net/qekg2zpm/12/

+0

空の場合は0が返されます。 –

関連する問題