阻止退格并仅删除$和

时间:2014-06-06 10:53:07

标签: javascript jquery jsf

我想阻止退格并删除按钮,从文本框中删除$.。 例如:如果我的文本框值为$ 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来获取特定的文本框。

2 个答案:

答案 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>