当前位置:  编程技术>移动开发
本页文章导读:
    ▪利用jquery兑现表单验证        利用jquery实现表单验证<html> <head> <meta charset="utf-8" /> <script type="text/javascript" src="/blog_article/script/jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(function(){     $(":input.required".........
    ▪ S5PV210(TQ210)学习札记——输入子系统驱动        S5PV210(TQ210)学习笔记——输入子系统驱动前面的文章简单的讲述了字符设备驱动程序的编写,用字符设备驱动的方式实现了按键驱动,但是,出了我们的自己编写的针对我们的这个驱动程序的.........
    ▪ Gallery 在滑动的时分一次显示一张图片       Gallery 在滑动的时候一次显示一张图片重写Gallery.                 return false;......

[1]利用jquery兑现表单验证
    来源: 互联网  发布时间: 2014-02-18
利用jquery实现表单验证

<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript" src="/blog_article/script/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(function(){
    $(":input.required").each(function(){
  var $required = $("<strong>*</strong>");
  $(this).parent().append($required);
  });
 $(":input.required").blur(function(){
  //判断鼠标离开了谁
   if($(this).is("#username")){
        $(".formtip").remove();
     //按照用户名的规则去验证
    if(this.value==""||this.value.length<6){
     var errMsg = "<span >用户名至少是6位</span>";
     $(this).parent().append(errMsg);
     }else{
     var Msg = "<span >用户名可以使用</span>";
     $(this).parent().append(Msg); 
      }
    }
  //判断一下如果是email的话,应该按照email 的规则去验证 
      if($(this).is("#email")){
        $(".emailtip").remove();
     //按照正则去验证
     var reg = /^\w{1,}@\w+\.\w+$/;
     var $email = $("#email").val();
     if(!reg.test($email)){
      var errMsg = "<span >邮箱不合法</span>";
         $(this).parent().append(errMsg);
      }else{
      var Msg = "<span >邮箱可以使用</span>";
         $(this).parent().append(Msg);   
       }
    
    }  
  }); 
});
</script>
</head>
<body>
<form action="#" method="post">
  <div >
  用户名:<input type="text" name="username" id="username" >
  </div>
  <div >
  邮箱:<input type="text" name="email" id="email" >
  </div>
</form>
</body>
</html>

2楼hsicool6小时前写得好 速成的都是啥啊 擦=。=!1楼zjkal3天前 14:49[code=java]nfor(;;){n System.out.println("表示支持!");n}n[/code]

    
[2] S5PV210(TQ210)学习札记——输入子系统驱动
    来源: 互联网  发布时间: 2014-02-18
S5PV210(TQ210)学习笔记——输入子系统驱动

前面的文章简单的讲述了字符设备驱动程序的编写,用字符设备驱动的方式实现了按键驱动,但是,出了我们的自己编写的针对我们的这个驱动程序的应用程序之外,其他应用程序都无法接收我们这个驱动的键值输入,为了让所有应用程序都可以接收我们的按键驱动解析的键值,Linux内核定义了“输入子系统”的概念,也就是说,只要我们按照这个模型进行驱动开发,并为其提供必须的接口函数,那么,Linux内核就可以正常来获取我们的键盘值了。

输入子系统的原理分析强烈推荐观看韦东山老师的视频讲座,讲的非常清楚,我这里是按照输入子系统的方式实现的按键驱动,下面是源码,放在这里做个备份:

#include <linux/types.h>
#include <linux/module.h>
#include <linux/input.h>
#include <linux/timer.h>
#include <linux/interrupt.h>
#include <linux/gpio.h>

static struct input_dev *buttons_dev;
static struct timer_list timer;
struct button_desc* button_desc = NULL;

struct button_desc{
	char* name;
	unsigned int pin;
	unsigned int irq;
	unsigned int val;
};

static struct button_desc buttons_desc[8] = {
	[0] = {
		.name = "S1",
		.pin = S5PV210_GPH0(0),
		.irq = IRQ_EINT(0),
		.val = KEY_L,
	},

	[1] = {
		.name = "S2",
		.pin = S5PV210_GPH0(1),
		.irq = IRQ_EINT(1),
		.val = KEY_S,
	},

	[2] = {
		.name = "S3",
		.pin = S5PV210_GPH0(2),
		.irq = IRQ_EINT(2),
		.val = KEY_C,
	},

	[3] = {
		.name = "S4",
		.pin = S5PV210_GPH0(3),
		.irq = IRQ_EINT(3),
		.val = KEY_ENTER,
	},

	[4] = {
		.name = "S5",
		.pin = S5PV210_GPH0(4),
		.irq = IRQ_EINT(4),
		.val = KEY_LEFTCTRL,
	},

	[5] = {
		.name = "S6",
		.pin = S5PV210_GPH0(5),
		.irq = IRQ_EINT(5),
		.val = KEY_MINUS,
	},

	[6] = {
		.name = "S7",
		.pin = S5PV210_GPH2(6),
		.irq = IRQ_EINT(22),
		.val = KEY_CAPSLOCK,
	},

	[7] = {
		.name = "S8",
		.pin = S5PV210_GPH2(7),
		.irq = IRQ_EINT(23),
		.val = KEY_SPACE,
	},
};

static void timer_function(unsigned long data){
	if(button_desc == NULL)
		return;

	if(gpio_get_value(button_desc->pin)){
		input_event(buttons_dev, EV_KEY, button_desc->val, 0);
	}
	else{
		input_event(buttons_dev, EV_KEY, button_desc->val, 1);
	}
	input_sync(buttons_dev);
}

static irqreturn_t irq_handler(int irq, void *devid){
	button_desc = (struct button_desc*)devid;
	mod_timer(&timer, jiffies + HZ/100);
	return IRQ_RETVAL(IRQ_HANDLED);
}

static int buttons_init(void){
	int i;
	
	buttons_dev = input_allocate_device();
	if(buttons_dev == NULL){
		printk(KERN_ERR "Error: allocate input device failed!\n");
		return -ENOMEM;
	}

	__set_bit(EV_KEY, buttons_dev->evbit);
	__set_bit(EV_REP, buttons_dev->evbit);

	__set_bit(KEY_L,        buttons_dev->keybit);
	__set_bit(KEY_S,        buttons_dev->keybit);
	__set_bit(KEY_C,        buttons_dev->keybit);
	__set_bit(KEY_SPACE,    buttons_dev->keybit);
	__set_bit(KEY_MINUS,    buttons_dev->keybit);
	__set_bit(KEY_ENTER,    buttons_dev->keybit);
	__set_bit(KEY_LEFTCTRL, buttons_dev->keybit);
	__set_bit(KEY_CAPSLOCK, buttons_dev->keybit);

	printk("1\n");
	if(input_register_device(buttons_dev)){
		goto error_1;
	}

	printk("2\n");
	init_timer(&timer);
	timer.function = timer_function;
	add_timer(&timer);

	printk("3\n");
	for(i = 0; i != 8; ++i){
		if(request_irq(buttons_desc[i].irq, irq_handler, 
			IRQF_TRIGGER_RISING|IRQF_TRIGGER_FALLING, buttons_desc[i].name, &buttons_desc[i])){
			goto error_2;
		}
	}
	printk("4\n");
	
	return 0;

error_2:
	for(--i; i >= 0; --i){
		free_irq(buttons_desc[i].irq, &buttons_desc[i]);
	}
	input_unregister_device(buttons_dev);

error_1:
	input_free_device(buttons_dev);

	return -EBUSY;
}

static void buttons_exit(void){
	int i;
	for(i = 0; i != 8; ++i){
		free_irq(buttons_desc[i].irq, &buttons_desc[i]);
	}

	input_unregister_device(buttons_dev);
	input_free_device(buttons_dev);
}

module_init(buttons_init);
module_exit(buttons_exit);
MODULE_LICENSE("GPL");

很显然,基于输入子系统的按键驱动比起直接编写的字符驱动设备要简单的多,不过按键消抖还是要加的,上面的代码加上了按键消抖。如果在开发过程中遇到了什么问题,还是欢迎留言讨论。


    
[3] Gallery 在滑动的时分一次显示一张图片
    来源: 互联网  发布时间: 2014-02-18
Gallery 在滑动的时候一次显示一张图片
重写Gallery.
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,  float velocityY) {
                return false;
        }
就OK了.

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3