input绑定datapicker控件后input再绑定blur或者mouseout等问题

  问题描述:今天在修改一个东西的时候需要给一个input输入域绑定blur事件,从而当它失去焦点后动态修改其中的内容。但是问题来了,当点击输入域datapicker控件出现,当离开输入域去选择时间时就触发了blur事件,而这个时候获取输入域内的内容时获取的是选择时间之前输入域的内容。这跟我们的想法相背离。比方说我们想校验选择的时间,可是每次都是校验的选择时间之前输入域的内容。

之前的错误做法:代码如下

  

$('input.date').live('blur',function(){//选择class为date的input输入域
if("" == $(this).val().trim()){
$(this).val('balabalabala');
}
});

  这段代码很简单,目的是当输入域失去焦点时获取输入域的内容,并判断是否为空,如果为空则设置内容为balabalabala。(当然,你在这个时候校验或者正则匹配是一样的)而问题来了,除非你输入域失去焦点前内容为空,否则永远不会修改其内容为balabalabala。换句话说,取到的内容为选择时间之前的内容。这跟我们的初衷违背,我们希望的是取到选择时间之后的内容并当输入域失去焦点的时候进行操作或者校验等。

解决办法:

常规思路:从输入域input绑定事件(比方说blur)去思考。结果是总是出错,问题得不到解决。唯一可行的但是不科学或者说不合理的方法如下:

$('input.date').blur(function () {
setTimeout(function () { /* 你的代码 */ }, 1000);
});

这段代码也很简单,选中控件,在失去焦点后不是马上去执行,而是设置一个延时,等待1秒或者几秒后再去执行。好了,问题解决。但是方法可行,却不可靠。你无法去左右用户点击事件后去点击其它部分之间的时间大小。

逆向思考:从datepicker这个插件方向去思考。该插件提供了几个方法,可以满足要求。

方法1:onSelect

$('input.date').datepicker({
onSelect: function(dateText) {
/*代码 */
if("" == $(this).val()){
$(this).val("balabalabala");
}
}
});

方法2:

$(".date-picker")
.datepicker(options)
.change(function () {
if("" == $(this).val()){
$(this).val("balabalabala");
}
});

  问题得到解决。

input绑定datapicker控件后input再绑定blur或者mouseout等问题的更多相关文章

  1. input的file 控件及美化

    在一些网站进行上传时,当单击了“浏览”按钮之后会弹出[选择文件]的对话框.想要实现这一功能,用input的file控件来实现就好啦~ <!doctype html> <html la ...

  2. HTML控件篇 -- input

    1. 取消input提示框及自动填充: <input type="text" autocomplete="off" /> 处理chrome下自动填充 ...

  3. 页面加载完成触发input[type="file"]控件问题

    由于浏览器厂家的限制,不同的浏览器不开放页面加载完成就允许触发input[type="file"]控件 测试 Chrome .火狐 .IE .微信客户端QQ =>桌面端: C ...

  4. input file HTML控件控制

    网页上添加一个input file HTML控件: 1 <input id="File1" type="file" /> 默认是这样的,所有文件类型 ...

  5. WPFS数据绑定(要是后台类对象的属性值发生改变,通知在“client界面与之绑定的控件值”也发生改变须要实现INotitypropertyChanged接口)

    WPFS数据绑定(要是后台类对象的属性值发生改变,通知在"client界面与之绑定的控件值"也发生改变须要实现INotitypropertyChanged接口) MainWindo ...

  6. HTTP模拟工具【C#/Winform源码】、Json绑定TreeView控件、使用了MetroModernUI、RestSharp、Dapper.Net、Newtonsoft.Json、SmartThreadPool这几个主要开源框架

    HTTP模拟工具 开发语言:C#/Winform开发工具:Visual Studio 2017数据库:   SQLite使用框架:界面-MetroModernUI              Http请 ...

  7. Dev控件VGridView单元格绑定控件

    实现的效果如下图: 1,实现分组显示 2,每行所绑定的控件不统一,内容自定义 实现方法: 采用VGridControl进行内容的定制 首先根据XML文件进行数据填充

  8. Dev控件GridView单元格绑定控件

    Dev控件GridView单元格绑定控件 //文本按钮 RepositoryItemButtonEdit btnFields = new RepositoryItemButtonEdit();//创建 ...

  9. 【WPF】WPF通过RelativeSource绑定父控件的属性

    1.后台代码实现绑定父控件的属性 RelativeSource rs = new RelativeSource(RelativeSourceMode.FindAncestor); //设定为离自己控件 ...

随机推荐

  1. 225. Implement Stack using Queues

    代码如下: class MyStack { // Push element x onto stack. Queue<Integer> queue=new ArrayDeque<> ...

  2. name值与id值在Js获取元素时的区别

    1.适用范围 除base.head.html.script.meta.title标签外,id都可以用:name只适用于select.form.frame.iframe.img.a.input等中. H ...

  3. Baxter机器人---测试准备(一)

    原创博文,转载请标明出处:--周学伟http://www.cnblogs.com/zxouxuewei/ baxter:http://sdk.rethinkrobotics.com/wiki/Work ...

  4. PHP字符串

    <?php $string1 = <<<EVILXR 我有一只小毛驴,我从来也不骑. 有一天我心血来潮,骑着去赶集. 我手里拿着小皮鞭,我心里正得意. 不知怎么哗啦啦啦啦,我摔 ...

  5. <老友记>学习笔记

    这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的 ...

  6. log tree(merge)

    http://www-users.cs.umn.edu/~he/diff/p256-severance.pdf http://www.eecs.harvard.edu/~margo/cs165/pap ...

  7. 使用 NGUI 实现头顶文字及血条

    以下是 NGUI HUD Text 实现的: 基本原理: 1. 在角色头顶绑一个点 Pivot,用于对齐 2. 因为界面总是覆盖在人物头顶信息的上面,所以将 UIRoot 分为2个 Panel:1) ...

  8. vc++ mfc 里保存缩放的bmp图片 不失真

    void CSaveView::OnFileSave() { BITMAP info;//原始图片 m_bitmap.GetBitmap(&info); CDC DC1; DC1.Create ...

  9. AIDL Service Android进程间通信机制

    转载出处:http://www.apkbus.com/home.php?mod=space&do=blog&uid=664680&id=59465 我们知道,在Android ...

  10. Postfix性能测试(PHP版)

    Postfix的性能压测(PHP版) 发送测试:分别使用PHP Mail()函数和PHPMailler smtp协议发送邮件, 推送速率是指 发送个数/PHP程序运行时间, 发送速率是指 发送个数/( ...