阻止$ and的退格和删除



我想要阻止退格和删除按钮从文本框中删除$.。例如:如果我的文本框值是$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>

相关内容

  • 没有找到相关文章

最新更新