为单个输入文本框编辑两种代码格式
Masked Edit two code formats for a single input text box
我有两个面具G999-9和H99-9代表毕业生和荣誉,两者都需要输入一个单一的输入文本html控件。
当第一次输入时,如果它碰到G,我希望它显示研究生格式的格式,对于荣誉,我希望它在输入时显示荣誉格式的格式。有一个简单的方法来做到这一点在javascript或jQuery?
例子:
<>之前G111-1H91-5G001-3G___-_(如果你点击G,它应该显示毕业格式)H__-_(如果你点击H,它会显示荣誉格式。)____-_(输入任何其他内容,或者不执行此操作。)之前谢谢,Marc
基于正则表达式演示
耶!正则表达式!是的,就像所有其他(非html)解析问题一样,有一个正则表达式。:)
$("input").keyup(function(e){
if(e.keyCode > 40 || e.keyCode < 37)
{
var validInput = $(this).val().match(/(([G])(([0-9]{3}[-]([0-9]{0,1})?|[0-9]{0,3})?)?|([H])(([0-9]{2}[-]([0-9]{0,1})?|[0-9]{0,2})?)?)/);
$(this).val(validInput?validInput[0]:"")
}
});
这是有点复杂(帮助优化它将非常感激),但它工作。
方法简单吗?你要么遍历字符串,要么使用一些奇特的正则表达式。
通常,我们会使用正则表达式来实现这一点,但假设您不太了解正则表达式(可能是一个糟糕的假设,但大多数可以阅读它们的人都会首先被它们所吸引),并且希望让您了解正在发生的事情,我将其写得更程序化:
<input type="text" class="formatted" />
$(document).ready(function(){
function applyMask(instr){
var pOut = [], delimitter = '-', format = 0, pSplit = 4, pMax = 6;
// There are a lot of ways to express this. I just chose one that should
// be understandable.
if ((instr.length > 0) && (instr[0].toUpperCase() == 'H'))
{
pSplit = 3;
pMax = 5;
}
pMax = Math.min(pMax, instr.length);
for (var i=0; i < pMax; i++)
{
if ((i==pSplit) && (instr[i] != delimitter))
{
pOut.push(delimitter);
}
else
{
pOut.push(instr[i]);
}
}
return pOut.join('');
}
$('.formatted').keyup(function(){
$(this).val(applyMask($(this).val()).toUpperCase());
});
});
这里有一个小提琴,甚至:http://jsfiddle.net/UdcND/
有一些jQuery插件可以轻松地将文本输入转换为掩码编辑:
-
一个简单但有用的插件: http://www.pengoworks.com/workshop/js/mask/
-
另一个不错的选择: http://digitalbush.com/projects/masked-input-plugin/
相关文章:
- 如何在有延迟的情况下对两个代码进行积分
- 使用javascript单击同一按钮,在两种样式之间更改css值
- 把两种不同的形式合为一
- 这两种不同的创建对象文字的方法有什么区别
- angularjs两种功能的替代品(欧芹和重置)
- 我想要相同的函数以两种方式反应
- HTML中两种JS实现之间的差异
- 为什么这两段代码返回的值不同
- 比较两种不同格式的时间戳-GAS
- 这两种方法有什么不同
- 正则表达式,两种方式,不同的结果
- 如何将两种不同类型的事件附加到同一元素
- 这两种使用 jQuery 追加 DOM 元素的方法有什么不同
- 通过两种方法创建和更新 CSS
- 什么'这两种继承策略之间的区别是什么
- 使用jQuery过滤两种输入类型
- 如何在面板中添加在两种类型的谷歌图表之间切换的按钮
- Javascript赢得'Don’不要跳过前两行代码
- 这两种用jquery编写代码的方式有什么不同?
- 为单个输入文本框编辑两种代码格式