2012-03-03 86 views
2

我有一个用户可以输入十六进制值的输入。 “#”符号是输入字段背景图像的一部分,因此用户只需输入数字即可。我希望将“#”标记为html,并使其不可选/不可编辑。这可能吗?输入中的第一个字符不可选/不可编辑

+0

也许这可能会有所帮助 - [有没有办法让文本区域部分可编辑?](http://stackoverflow.com/questions/5444874/is-there-a-way-to-make- a-text-area-partially-editable-make-only-portions-th) – neo108 2012-03-03 12:25:34

回答

5

监听输入元素的keyup事件,那么处理程序中,您可以强制输入的值总是#字符开始,接着0-9/AF

$('#input').bind('keyup', function(){ 
    var sanitized = $(this).val().replace(/[^0-9a-f]/g,''); 
    $(this).val('#'+sanitized); 
}); 

观看演示这里:http://jsfiddle.net/QrrjW/1/

+0

很好的解决方案。但是,如果你绑定到keydown事件会更酷:) – 2012-03-03 18:50:28

+0

@Jørgen最初我也想到了这一点:)但是由于'keydown'在插入触发键之前接受了输入值,所以最后一个字符不会被清理掉http ://jsfiddle.net/QrrjW/2/ – fyzlman 2012-03-04 07:13:36

+0

伟大的解决方案。谢谢@Jørgen! – user495915 2012-03-04 10:09:23

0

将x字符输入框作为默认值。使用js管理.if用户第一个charector类型#然后确定其他类型#使用js和js中的用户输入字符。

相关问题