我想要阻止退格和删除按钮从文本框中删除$
和.
。例如:如果我的文本框值是$10.00,我应该能够只删除数字,而不是$和点。
<h:dataTable id="Dtable" var="item"
value="#{bean.list}">
<h:column>
<h:inputText id="txt1" value="#{item.Amount1}" onkeypress=" return isMoney(this,event)"></h:inputText>
</h:column>
</h:dataTable>
这就是为什么我只允许数字,$和点。在文本框中输入。
function isMoney(thisObj,evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
if(charCode == 46 || charCode == 36) // decimal pt or $
return true;
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
注意:没有行可能会有所不同,所以我不能使用id来获取特定的文本框。
如果您的字段是动态添加的,您必须使用事件委托
由于我不知道在本文档中为页面添加元素的代码,因此您将找到一个按钮,该按钮将文本字段添加到body标签
正如你现在看到的,脚本甚至可以处理动态添加的元素
鉴于我的"宝贵时间",请不要忘记在我的回复中标记绿色;)谢谢。
<!DOCTYPE HTML>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
(function ($, undefined) {
$.fn.getCursorPosition = function() {
var el = $(this).get(0);
var pos = 0;
if('selectionStart' in el) {
pos = el.selectionStart;
} else if('selection' in document) {
el.focus();
var Sel = document.selection.createRange();
var SelLength = document.selection.createRange().text.length;
Sel.moveStart('character', -el.value.length);
pos = Sel.text.length - SelLength;
}
return pos;
}
})(jQuery);
$(document).ready(function(){
$('#new').click(function(){
$('<input type="text" value="$500.45">').appendTo('body')
})
$('body').on('keydown','input',function(e){
var keycode= (e.keyCode ? e.keyCode : e.which);
if(keycode == 8){
var position = $(this).getCursorPosition();
var ca=$(this).val().slice(0,position).split('');
var x=ca[ca.length-1];
if(x==='$'||x==='.'){e.preventDefault()};
};
if(keycode == 46){
var position = $(this).getCursorPosition();
var ca=$(this).val().slice(0,position+1).split('');
var x=ca[ca.length-1];
if(x==='$'||x==='.'){e.preventDefault()};
};
})
});
</script>
</head>
<body>
<input id="a" name="" type="text" value="$500.45">
<input name="" type="button" value="newImput" id="new">
</body>
</html>
也许我找到解决你问题的办法了。
对于脚本,我使用这个小插件来获取插入符号位置获取光标位置(以字符为单位)在文本输入字段
和一些jQuery代码。
这是一个工作小提琴。
正如您在这个示例中看到的,您不能删除字符$和。从文本字段使用退格或canc您需要的所有代码都是
<script type="text/javascript">
(function ($, undefined) {
$.fn.getCursorPosition = function() {
var el = $(this).get(0);
var pos = 0;
if('selectionStart' in el) {
pos = el.selectionStart;
} else if('selection' in document) {
el.focus();
var Sel = document.selection.createRange();
var SelLength = document.selection.createRange().text.length;
Sel.moveStart('character', -el.value.length);
pos = Sel.text.length - SelLength;
}
return pos;
}
})(jQuery);
$(document).ready(function(){
$('#a').on('keydown',function(e){
var keycode= (e.keyCode ? e.keyCode : e.which);
if(keycode == 8){
var position = $(this).getCursorPosition();
var ca=$(this).val().slice(0,position).split('');
var x=ca[ca.length-1];
if(x==='$'||x==='.'){e.preventDefault()};
};
if(keycode == 46){
var position = $(this).getCursorPosition();
var ca=$(this).val().slice(0,position+1).split('');
var x=ca[ca.length-1];
if(x==='$'||x==='.'){e.preventDefault()};
};
});
});
</script>