【问题标题】:Javascript allow only numeric pasteJavascript 只允许数字粘贴
【发布时间】:2015-03-24 10:31:40
【问题描述】:

Javascript/jQuery:

 $(document).ready(function () {
     $('#txt').bind("paste", function (e) {
         var $this = $(this);
         $this.val($this.val().replace(/[^\d.]/g, ''));
     });
 });

HTML:

<asp:TextBox ID="txt" runat="server"></asp:TextBox>

如果值如下

10-10-20.0a

结果必须如下

1010200

我只想让它将数值粘贴到文本框,否则,禁用它。但是,如果我尝试上面的 javascript 代码,它就无法正常工作。

我在 javascript 方面错过了什么?

【问题讨论】:

    标签: javascript jquery asp.net


    【解决方案1】:

    调用Textbox的change事件函数,而不是document.ready

    HTML

    <asp:TextBox ID="txt" runat="server" onchange="onlyNum()"></asp:TextBox>
    

    JQuery

        function onlyNum() {
          var $this = $('#txt');
          $this.val($this.val().replace(/\D/g, ''));
        }
    

    【讨论】:

      【解决方案2】:

      您需要确保您的客户端 ID 模式设置正确,否则发出的文本框的 ID 可能不是“txt”。

      https://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode%28v=vs.110%29.aspx

      <asp:TextBox ID="txt" runat="server" ClientIDMode="Static" ></asp:TextBox>
      

      另一种方法是使用对重用非常有用的 CSS 类。

      <asp:TextBox ID="txt" runat="server" CssClass="numbers-only" ></asp:TextBox>
      

      您的 jQuery 选择器将是:

      $("input.numbers-only").on("paste", function(){  
          // do your stuff here
      }); 
      

      【讨论】:

      • @Richard 你检查过你发出的 html 吗?
      • 投票指出 ASP.Net 对 ID 的操纵可能存在问题。
      【解决方案3】:

      jquery 事件应该是:

      $('#.txt').on('paste', function() {...});
      

      在此处查看示例:Catch paste input

      注意使用超时来允许在操作之前粘贴值。

      一旦您正确处理了事件并获得了粘贴的值,您就可以添加您的验证。

      另请参阅 ste-fu 关于引用正确字段的答案,因为 asp.net 默认情况下会将容器的 is 附加到您的文本框 id 并且选择器“#txt”将不起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-22
        • 1970-01-01
        • 2016-10-07
        相关资源
        最近更新 更多