的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方面错过了什么?
答案 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 ;不会工作。