投稿の目的:クロスブラウザーの入力タイプ= "number"を使用するか、最適なソリューションについて学ぶかを開発者と共有すること。 主な問題は、このタイプの入力が異なるブラウザーで異なるように表示されることであり、CSSを介してカスタマイズすることはほとんど不可能です。 このソリューションを使用すると、設計に従って矢印を簡単に配置したり
、ネイティブの「input type = "number"」を
サポートしてい
ないブラウザーで矢印を表示したりできます。
現時点では、プラグインに渡されるパラメーターは1つだけです。これは、jsコードが適用されるセレクターです。
jQuery(function ($) { $('input[type=number]').iLightInputNumber(); });
たとえば、異なる属性を持つ3つの入力を取ります。
<input type="number" id="input01" step="100" min="0" class="input1" placeholder="Your budget"> <input type="number" min="1" max="99" class="input2" placeholder="1"> <input type="number" min="1" class="input3 input4" value="1">
作業例。チェック済み:オペラ、クローム、ff、ie9 +
プラグインコード:
;(function ($) { $.fn.iLightInputNumber = function (options) { var inBox = '.input-number-box', newInput = '.input-number', moreVal = '.input-number-more', lessVal = '.input-number-less'; this.each(function () { var el = $(this); $('<div class="' + inBox.substr(1) + '"></div>').insertAfter(el); var parent = el.find('+ ' + inBox); parent.append(el); var classes = el.attr('class'); parent.append('<input class="' + newInput.substr(1) + '" type="text">'); el.hide(); var newEl = el.next(); newEl.addClass(classes); var attrValue; function setInputAttr(attrName) { if (el.attr(attrName)) { attrValue = el.attr(attrName); newEl.attr(attrName, attrValue); } } setInputAttr('value'); setInputAttr('placeholder'); setInputAttr('min'); setInputAttr('max'); setInputAttr('step'); parent.append('<div class=' + moreVal.substr(1) + '></div>'); parent.append('<div class=' + lessVal.substr(1) + '></div>'); });
アドバイス、コメント、提案をお待ちしております。
UPD:
キーボードの矢印のサポートが追加されました。