Javascript只允许数字粘贴

时间:2015-03-24 10:31:41

标签: javascript jquery asp.net

的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方面错过了什么?

3 个答案:

答案 0 :(得分:5)

将文本框的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, ''));
    }

答案 1 :(得分:1)

您需要确保正确设置了客户端ID模式,否则发出的文本框可能没有ID&#34; txt&#34;。

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
}); 

答案 2 :(得分:0)

jquery事件应该是:

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

请参阅此处的示例:Catch paste input

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

正确处理事件并获取粘贴值后,您可以添加验证。

另请参阅ste-fu关于引用正确字段的答案,因为asp.net默认会将容器附加到您的文本框ID和选择器&#39; #txt&#39 ;不会工作。