点击加减或手动改变表单值

<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>点击加减或手动改变表单值(支持键盘控制)的jQuery插件@Mr.Think</title>
<link rel="stylesheet" href="http://mrthink.net/demo/css/base.css" />
<link rel="shortcut icon" type="image/x-icon" href="http://mrthink.net/wp-content/themes/zsofa/favicon.ico" />
<meta name="author" content="Mr.Think又名青鸟简称i" />
<meta name="keywords" content="i,Mr.Think,前端开发,WEB前端,前端技术,前端开发,WEB前端开发,用户体验,网站策划,网站优化,青鸟,javascript,jQuery,css,xhtml,html,UE,SEO,Mr.Think的博客,青鸟的博客,PHP爱好者" />
<meta name="description" content="Mr.Think的博客,中文网名青鸟,现专注于WEB前端开发,同时也是一位PHP的爱好者.爱思考,有点代码洁癖,生吃过螃蟹腿,喜好肉食.这里是我记录知识与生活琐事的地方." />
<link rel="pingback" href="http://mrthink.net/xmlrpc.php" />
<link rel="alternate" type="application/rss+xml" title="Mr.Think的博客 RSS Feed" href="http://mrthink.net/feed/" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<style>
/*demo css*/
.i_tips{height:30px;margin-left:20px;color:#f60;font-size:14px;line-height:30px}
.i_box{margin:10px 20px;font-size:14px;float:left}
.i_box *{vertical-align:middle}
.i_box a{padding:2px 5px;background-color:#e9e9e9;border:1px solid #ccc;text-decoration:none;color:#585858;line-height:20px}
.i_box a:hover{color:#000}
.i_box input{30px;height:18px;margin:0 8px;padding:2px;border:1px solid #ccc;text-align:center;line-height:16px}
</style>
</head>
<body>
        <!--DEMO start-->
<div id="demo">
        <div class="i_tips"></div>
    <div class="i_box"><a href="javascript:;" class="J_minus">-</a><input type="text" value="0" class="J_input" /><a href="javascript:;" class="J_add">+</a></div>
    <div class="i_box"><a href="javascript:;" class="J_minus">-</a><input type="text" value="0" class="J_input" /><a href="javascript:;" class="J_add">+</a></div>
    <div class="i_box"><a href="javascript:;" class="J_minus">-</a><input type="text" value="0" class="J_input" /><a href="javascript:;" class="J_add">+</a></div>
    <div class="i_box"><a href="javascript:;" class="J_minus">-</a><input type="text" value="0" class="J_input" /><a href="javascript:;" class="J_add">+</a></div>
    <div class="i_box"><a href="javascript:;" class="J_minus">-</a><input type="text" value="0" class="J_input" /><a href="javascript:;" class="J_add">+</a></div>
        
</div> 
<script>
/*******************************
 * @author Mr.Think
 * @author blog http://mrthink.net/
 * @2011.12.09
 * @可自由转载及使用,但请注明版权归属
 *******************************/
$.fn.iVaryVal=function(iSet,CallBack){
        /*
         * Minus:点击元素--减小
         * Add:点击元素--增加
         * Input:表单元素
         * Min:表单的最小值,非负整数
         * Max:表单的最大值,正整数
         */
        iSet=$.extend({Minus:$('.J_minus'),Add:$('.J_add'),Input:$('.J_input'),Min:0,Max:20},iSet);
        var C=null,O=null;
        //插件返回值
        var $CB={};
        //增加
        iSet.Add.each(function(i){
                $(this).click(function(){
                        O=parseInt(iSet.Input.eq(i).val());
                        (O+1<=iSet.Max) || (iSet.Max==null) ? iSet.Input.eq(i).val(O+1) : iSet.Input.eq(i).val(iSet.Max);
                        //输出当前改变后的值
                        $CB.val=iSet.Input.eq(i).val();
                        $CB.index=i;
                        //回调函数
                        if (typeof CallBack == 'function') {
                CallBack($CB.val,$CB.index);
            }
                });
        });
        //减少
        iSet.Minus.each(function(i){
                $(this).click(function(){
                        O=parseInt(iSet.Input.eq(i).val());
                        O-1<iSet.Min ? iSet.Input.eq(i).val(iSet.Min) : iSet.Input.eq(i).val(O-1);
                        $CB.val=iSet.Input.eq(i).val();
                        $CB.index=i;
                        //回调函数
                        if (typeof CallBack == 'function') {
                                CallBack($CB.val,$CB.index);
                          }
                });
        });
        //手动
        iSet.Input.bind({
                'click':function(){
                        O=parseInt($(this).val());
                        $(this).select();
                },
                'keyup':function(e){
                        if($(this).val()!=''){
                                C=parseInt($(this).val());
                                //非负整数判断
                                if(/^[1-9]\d*|0$/.test(C)){
                                        $(this).val(C);
                                        O=C;
                                }else{
                                        $(this).val(O);
                                }
                        }
                        //键盘控制:上右--加,下左--减
                        if(e.keyCode==38 || e.keyCode==39){
                                iSet.Add.eq(iSet.Input.index(this)).click();
                        }
                        if(e.keyCode==37 || e.keyCode==40){
                                iSet.Minus.eq(iSet.Input.index(this)).click();
                        }
                        //输出当前改变后的值
                        $CB.val=$(this).val();
                        $CB.index=iSet.Input.index(this);
                        //回调函数
                        if (typeof CallBack == 'function') {
                CallBack($CB.val,$CB.index);
            }
                },
                'blur':function(){
                        $(this).trigger('keyup');
                        if($(this).val()==''){
                                $(this).val(O);
                        }
                        //判断输入值是否超出最大最小值
                        if(iSet.Max){
                                if(O>iSet.Max){
                                        $(this).val(iSet.Max);
                                }
                        }
                        if(O<iSet.Min){
                                $(this).val(iSet.Min);
                        }
                        //输出当前改变后的值
                        $CB.val=$(this).val();
                        $CB.index=iSet.Input.index(this);
                        //回调函数
                        if (typeof CallBack == 'function') {
                CallBack($CB.val,$CB.index);
            }
                }
        });
}
//调用
$( function() {
        
        $('.i_box').iVaryVal({},function(value,index){
                $('.i_tips').html('你点击的表单索引是:'+index+';改变后的表单值是:'+value);
        });
        
});
</script>


<!--DEMO end-->

  

原文地址:https://www.cnblogs.com/huanlei/p/2536542.html