我想阻止退格并删除按钮,从文本框中删除$
和.
。
例如:如果我的文本框值为$ 10.00,我应该只能删除不是$和dot的数字。
<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;
}
注意:行中没有varry,所以我不能使用id来获取特定的文本框。
答案 0 :(得分:1)
如果您的字段是动态添加的,则必须使用event delegation
由于我无法在本文档中了解向页面添加元素的代码,因此您会找到一个按钮,将文本字段添加到正文标记中
正如您现在所看到的,脚本甚至可以使用动态添加的元素
鉴于我的宝贵时间&#34;不要忘记在我的回复中标记绿色;)谢谢。
<!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>
答案 1 :(得分:0)
可能我找到了解决问题的方法
对于脚本,我使用这个小插件获取插入位置Get cursor position (in characters) within a text Input field
以及一些jQuery代码。
这是一个有效的Fiddle
正如您在此示例中所看到的,您无法删除字符$和。来自使用退格或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>