Почему я могу обновить файл, принадлежащий root, используя sudo vi, но не добавлять к нему строку с помощью sudo echo "Thing" >> файла?

我正在创建一个网页,其中有一个输入文本字段,我想只允许输入数字字符,如(0,1,2,3,4,5...9)0-9。

我怎样才能用jQuery做到这一点呢?

解决办法

注意:这是一个更新的答案。下面的评论指的是旧版本,该版本乱用了关键代码。

jQuery

自己试试[在JSFiddle][1].

没有原生的jQuery实现,但是你可以用下面的 "inputFilter "插件来过滤文本<input>的输入值(支持Copy+Paste, Drag+Drop, 键盘快捷键,上下文菜单操作,非打字键,光标位置,不同的键盘布局,以及[自IE 9以来的所有浏览器][2])。

// Restricts input for the set of matched elements to the given inputFilter function.
(function($) {
  $.fn.inputFilter = function(inputFilter) {
    return this.on("input keydown keyup mousedown mouseup select contextmenu drop", function() {
      if (inputFilter(this.value)) {
        this.oldValue = this.value;
        this.oldSelectionStart = this.selectionStart;
        this.oldSelectionEnd = this.selectionEnd;
      } else if (this.hasOwnProperty("oldValue")) {
        this.value = this.oldValue;
        this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
      }
    });
  };
}(jQuery));

你现在可以使用 "inputFilter "插件来安装一个输入过滤器。

$(document).ready(function() {
  $("#myTextBox").inputFilter(function(value) {
    return /^\d*$/.test(value);    // Allow digits only, using a RegExp
  });
});

这里还有一些输入过滤器的例子,可能会有帮助。


return /^-?\d*$/.test(value);                // Integer
return /^\d*$/.test(value);                  // Integer >= 0
return /^\d*$/.test(value) &&                // Integer >= 0 and 
评论(30)
$(document).ready(function() {
    $("#txtboxToFilter").keydown(function(event) {
        // Allow only backspace and delete
        if ( event.keyCode == 46 || event.keyCode == 8 ) {
            // let it happen, don't do anything
        }
        else {
            // Ensure that it is a number and stop the keypress
            if (event.keyCode < 48 || event.keyCode > 57 ) {
                event.preventDefault(); 
            }   
        }
    });
});

来源:http://snipt.net/GerryEng/jquery-making-textfield-only-accept-numeric-values

评论(4)

你可以使用这个JavaScript函数。

function maskInput(e) {
    //check if we have "e" or "window.event" and use them as "event"
        //Firefox doesn't have window.event 
    var event = e || window.event 

    var key_code = event.keyCode;
    var oElement = e ? e.target : window.event.srcElement;
    if (!event.shiftKey && !event.ctrlKey && !event.altKey) {
        if ((key_code > 47 && key_code < 58) ||
            (key_code > 95 && key_code < 106)) {

            if (key_code > 95)
                 key_code -= (95-47);
            oElement.value = oElement.value;
        } else if(key_code == 8) {
            oElement.value = oElement.value;
        } else if(key_code != 9) {
            event.returnValue = false;
        }
    }
}

你可以像这样把它与你的文本框绑定。

$(document).ready(function() {
    $('#myTextbox').keydown(maskInput);
});

我在生产中使用上述方法,效果非常好,而且是跨浏览器的。此外,它不依赖于jQuery,所以你可以用内联JavaScript将其绑定到你的文本框。

<input type="text" name="aNumberField" onkeydown="javascript:maskInput()"/>
评论(1)