做了个限制文本框最大输入长度的jquery插件,效果图(共2个文本框,限制最多10个字符):
功能:当超出设置的最大字符长度后,会截断字符串、更改当前元素的css(会在1秒后还原css)、支持长度超出后的异常回调
使用方式:
<body>
<textarea id="filter1" rows="5" cols="100"></textarea>
<textarea id="filter2" rows="5" cols="100"></textarea>
<br />
<span id="msg"></span>
<script language="javascript" type="text/javascript">
$(function () {
function processException(id) {
$("#msg").html(id + " exception occurred.<br />" + $("#msg").html());
} $("#filter1,#filter2").restrictFieldLength({
maxTextLength: 10,
restoreTime:2000,
exceptionCallback: processException
});
});
</script>
</body>
jquery.restrictFieldLength.js:
(
function ($) {
$.fn.restrictFieldLength = function (settings) {
var opts = $.extend({}, $.fn.restrictFieldLength.defaultSettings, settings || {}); return this.each(function () {
var elem = $(this); elem.on("keyup", function () {
var s = elem.val();
if (s.length >= opts.maxTextLength) {
elem.val(s.slice(0, opts.maxTextLength));
elem.prop("class", opts.exceptionCss);
if (opts.exceptionCallback) {
opts.exceptionCallback(elem[0].id);
}
var normalIt = function () {
elem.prop("class", opts.defaultCss);
}
setTimeout(normalIt, opts.restoreTime);
}
});
});
}
$.fn.restrictFieldLength.defaultSettings = {
maxTextLength: 100,
defaultCss: "restrictFieldLength_defaultCss",
exceptionCss: "restrictFieldLength_exceptionCss",
restoreTime:1000,
exceptionCallback: null
}
}
)(jQuery);
jquery.restrictFieldLength.css
.restrictFieldLength_defaultCss
{
color:black;
}
.restrictFieldLength_exceptionCss
{
color:red;
}