【问题标题】:Restricting input to textbox: allowing only numbers and decimal point in Titanium限制文本框的输入:Titanium 中只允许数字和小数点
【发布时间】:2014-04-12 11:09:57
【问题描述】:

如何限制文本框的输入,使其只接受数字和小数点?

【问题讨论】:

标签: titanium titanium-mobile appcelerator-mobile titanium-alloy


【解决方案1】:
var textField = Ti.UI.createTextField({
        top : 20,
        left : 10,
        right : 10,
        height : 60,
        keyboardType : Ti.UI.KEYBOARD_NUMBER_PAD
    });
    Window.add(textField);

借助属性keyboardType : Ti.UI.KEYBOARD_NUMBER_PAD,您可以限制文本框的输入,使其仅接受数字和小数点

【讨论】:

    【解决方案2】:

    这是本站另一位用户制作的 jsfiddle,ShreejiShah:http://jsfiddle.net/4HHeQ/ 这是原始问题:How to make HTML input tag only accept numbers?

    它使用 jQuery 来检测击键,

    jQuery("#myId").keydown(function(event) {
            // Allow: backspace, delete, tab, escape, enter and .
            if ( jQuery.inArray(event.keyCode,[46,8,9,27,13,190]) !== -1 ||
                 // Allow: Ctrl+A
                (event.keyCode == 65 && event.ctrlKey === true) || 
                 // Allow: home, end, left, right
                (event.keyCode >= 35 && event.keyCode <= 39)) {
                     // let it happen, don't do anything
                     return;
            }
            else {
                // Ensure that it is a number and stop the keypress
                if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
                    event.preventDefault(); 
                   }   
            }
        });
    

    如果键不是数字,则退格、删除、制表符、转义、回车或 .它“阻止默认”操作,即在文本框中显示输入的字符。

    再一次,这不是我的代码,但它绝对出色,所以我希望在不冒犯任何人的情况下使用它。

    【讨论】:

      【解决方案3】:

      您可以使用以下函数来验证数字和数字。

      function isDigit(number) {
          var letters = /^[0-9. ]+$/;
          var bl = false; 
          if (number.match(letters)) {
      
              bl = true;
          }
          return bl;
      }
      
      Ti.API.info(isDigit("12ass40.12456"));
      Ti.API.info(isDigit("12350.12456"));
      

      这只是一个示例,但您可以在 textField 的更改事件上调用此函数进行验证。

      【讨论】:

        【解决方案4】:

        使用这个:

        <html>
            <head>
                <script>
                function removeNumbers(textbox) {
                    textbox.value = textbox.value.replace(/[^\0-9]/g, "");
                }
                </script>
            </head>
            <body>
            <input onKeyPress="removeNumbers(this)">
        
            </body>
        </html>
        

        【讨论】:

        • 你需要有一个每次按下新键时更新的方法
        【解决方案5】:

        我们来了!我在我的代码中做到了这一点!好好享受吧

        <html>
         <head>
          <script>
          function replacePonto(){
            var input = document.getElementById('qtd');
            var ponto = input.value.split('.').length;
        
            if (ponto > 2)
             input.value=input.value.substr(0,(input.value.length)-1);
            input.value=input.value.replace(/[^0-9.]/,'');
        
            if (ponto ==2)
             //this limit how much numbers after decimal point
              input.value=input.value.substr(0,(input.value.indexOf('.')+3));
        
             if(input.value == '.')
              input.value = "";
                 }
          </script>
          </head>
          <body>
             <input type="text" id="qtd" maxlength="10" style="width:140px" onkeyup="return replacePonto()">
          </body>
        </html>

        【讨论】:

        • input.value=input.value.replace(/[^0-9.]/,'');。现在编辑...现在这段代码真的很重要!!!
        【解决方案6】:

        这里非常适合我:

        function validateNumberDouble(event) {
            var n = event.key;
            k = event.keyCode;
            v = event.target.value;
        
            if (k === 8 || k === 37 || k === 39 || k === 9 || k === 13) {
                return true;
            } else {
                var dot = v.split('.').length;
        
                if ((dot > 1 && n == '.') || (v.length == 0 && dot >= 1 && n == '.')) {
                    return false;
                } else {
                    if (n.match(/[^0-9.]/)) {
                        return false;
                    }else{
                        if(v.indexOf('.')>0 && v.length - v.indexOf('.')>=3){
                            return false;
                        }
                    }
                }
            }
        }
        

        https://jsfiddle.net/renatoalexandro/rdeu4n1m

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-03-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-12
          • 1970-01-01
          • 1970-01-01
          • 2010-10-27
          相关资源
          最近更新 更多