在文本框中,用户只能输入Numbers(0-9),逗号,点和Backspace。

我们希望用户在文本框中进行操作(Ctrl + X,Ctrl + V,Ctrl + C,Ctrl + A);
但不应在文本框中输入V,X,A和C。如何将业务逻辑应用于以下代码?

function isDecimalNumber(eve, element) {
 var charCode = (eve.which) ? eve.which : event.keyCode
 if (charCode == 44 || charCode == 46 || charCode == 8 || (charCode > 48 && charCode < 57))
  return true;
 return false;
}


请使用此小提琴仅供参考:https://jsfiddle.net/jdxn1Lmn/5/

最佳答案

您可以做的就是这样。

使用我在下面创建的实用程序:

  var clipboardUtility = {
      getCopiedText: function (params) {
          var input = params || {},
              e = input.event,
              incomingText;

          if (e) {
              if (e.originalEvent.clipboardData) {
                  incomingText = (e.originalEvent || e).clipboardData.getData('text/plain');
              } else if (window.clipboardData) {
                  incomingText = window.clipboardData.getData('Text');
              }
          }

          return incomingText;
      }
  };


并将粘贴事件附加到jQuery

    $("#txt-subject-name").bind("paste", onPatseEvent);


并将以下代码放在您的粘贴事件中:

function onPatseEvent(e) {
    var incomingText = clipboardUtility.getCopiedText({
        event: e
    });

    //Regex way of numeric input only
    if (/^\d+$/g.test(incomingText)) {
        e.preventDefault();
            alert('Pasting values that contains non numeric values are not allowed');
    }
},

09-25 19:37