2017-07-13 1 views
0

は、私は動的な値が含まれますplaceholder必要があります。応答プレースホルダーテキスト

<input type="text" placeholder="Search by Name, Order Number and Location" style="width: 300px" /> 

<input type="text" placeholder="Search by Name" style="width: 300px" /> 

を、私は入力フィールド内のすべてのプレースホルダーテキストを表示する必要があります。フォントサイズを小さくすることはできますが、動的にする必要があります。

+0

それを追加し、私はそれを3回を読んでいると私はまだまったくのあまり意味がないことができます。だから、プレースホルダにどのようなテキストが入っていても入力ボックスを同じサイズにしたいのですか?もしそうなら、なぜ幅を指定しないのですか? –

+0

@ Anthony'Runt'Cleaves彼は、入力幅に関係なくプレースホルダテキストが常に見えるようにしたいと考えています。 –

答えて

1

var step = 0.1; 
 

 
setInterval(function() { 
 
    // Loop over input elements 
 
    $('input').each(function() { 
 
    // Only change font-size if input value is empty (font-size should only affect placeholder) 
 
    if ($(this).val() === '') { 
 
     // Create clone 
 
     $clone = $('<span></span>') 
 
     .appendTo('body') 
 
     .addClass('inputClone') 
 
     .text($(this).attr('placeholder')); 
 
     // Adjust font-size of clone 
 
     var fontSize = $(this).css('font-size'); 
 
     do { 
 
     fontSize = parseFloat($clone.css('font-size')) - step; 
 
     $clone.css({ 
 
      'font-size': fontSize 
 
     }); 
 
     } while ($clone.width() > $(this).width()); 
 
     // Maintain input field size 
 
     $(this).css({ 
 
     "width": $(this).width() + "px", 
 
     "height": $(this).height() + "px" 
 
     }); 
 
     // Change input font-size 
 
     $(this).animate({ 
 
     'font-size': fontSize 
 
     }); 
 
     // Delete clone 
 
     $clone.remove(); 
 
    } else { 
 
     // Default input field back to normal 
 
     $(this) 
 
     .finish() 
 
     .clearQueue() 
 
     .attr('style', function(i, style) { 
 
      // Remove inline style for font-size 
 
      return style.replace(/font-size[^;]+;?/g, ''); 
 
     }); 
 
    } 
 
    }); 
 
}, 100);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
    <table border="1"> 
 
    <tr> 
 
     <td>Name:</td> 
 
     <td> 
 
     <input type="text" id="name1" placeholder="Search by Name, Order Number and Location" /> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td>Name:</td> 
 
     <td> 
 
     <input type="text" id="name2" placeholder="Search by Name"/> 
 
     </td> 
 
    </tr> 
 
    </table> 
 
</form>

別のフィールドを作成し、私はあなたがあなたの投稿を編集示唆

+0

テキストが完全に表示されません。 –

+0

@JaganCはい、彼のアプローチはおそらくあなたが使うものでしょう。すなわち、1)テキストを別の要素に複製する。 2)サイズを計算する。 3)クローンのサイズが十分に小さくなるまで、クローンのサイズを継続的に変更します。 4) 'font-size'を使って入力要素に更新します。レコードのために、私はあなたの元のアイデア(プレースホルダーテキストのサイズ変更)が妥当だとは思わない。より良いアプローチは、長いプレースホルダ値を避けることでしょうか? – romellem

+0

@romellemええ、私はすでにこのソリューションを実装していますが、クライアントはこのソリューションに同意していません。彼はどんなサイズであっても長いプレースホルダを表示したい。 –