Pendant le processus de développement front-end, des zones de saisie numériques sont généralement utilisées. Par exemple, il est nécessaire de saisir un montant et il est interdit de saisir des caractères non numériques ou de coller des caractères non numériques. ?
Premier passage (function($){ })(jQuery); pour exécuter la fonction immédiatement pour l'isolation du module, ce qui peut éviter les problèmes de pollution des variables avec d'autres modules fonctionnels et plug-ins. Toutes les variables globales privées peuvent être. Placé à la tête de la fonction d'exécution immédiate.
Ensuite, étendez la méthode numbox sur le prototype jquery et entrez directement le code
(function ($) { // 数值输入框 $.fn.numbox = function (options) { var type = (typeof options); if (type == 'object') { // 创建numbox对象 if (options.width) this.width(options.width); if (options.height) this.height(options.height); this.bind("input propertychange", function (obj) { numbox_propertychange(obj.target); }); this.bind("change", function (obj) { var onChange = options.onChange; if (!onChange) return; var numValue = Number(obj.target.value); onChange(numValue); }); this.bind("hide", function (obj) { var onHide = options.onHide; if (!onHide) return; var numValue = Number(obj.target.value); onHide(numValue); }); return this; } else if (type == 'string') { // type为字符串类型,代表调用numbox对象中的方法 var method = eval(options); if (method) return method(this, arguments); } } // 属性值变化事件 function numbox_propertychange(numbox) { if (numbox.value == '-' || numbox.value == numbox.oldvalue) return; var numvalue = Number(numbox.value); if (isNaN(numvalue)) { numbox.value = numbox.oldvalue; } else { numbox.oldvalue = numbox.value; } } // 获取值 function getValue(numbox) { var value = numbox.val(); return Number(value); } // 设置值 function setValue(numbox, params) { if (params[1] == undefined) return; var numvalue = Number(params[1]); if (!isNaN(numvalue)) { for (var i = 0; i < numbox.length; i++) { numbox[i].focus(); numbox[i].value = numvalue; numbox[i].oldvalue = numvalue; } } } })(jQuery); // 这里传入jQuery对象作为参数,是为了避免在模块内部直接去访问全局对象,避免过度依赖其他模块,降低耦合度,更加规范化,可控性更高,可参考其他成熟jQuery插件(easyui、bootstrap)
La méthode d'appel est la suivante
<body> <input id="test" /> <script> $("#test").numbox({ width: 150, height: 20 }); </script> </body>
Ce qui précède est l'intégralité du contenu de cet article, j'espère que le contenu de cet article pourra apporter de l'aide aux études ou au travail de chacun, et j'espère également soutenir le site Web PHP chinois !
Pour plus d'articles liés à l'implémentation jQuery de la zone de saisie du montant, veuillez faire attention au site Web PHP chinois !