TextBox文本框允许用户输入正或负小数
按项目要求,
2个TextBox文本框,一个只接受正小数,另一个可以接受正或负小数。
因此,程序可控制在修改或新输入时,输入的数据符合要求。

View Code
验证整数,
只有写javascript来实现,

View Code
2个TextBox文本框,一个只接受正小数,另一个可以接受正或负小数。
因此,程序可控制在修改或新输入时,输入的数据符合要求。

<asp:TemplateField> <HeaderStyle BorderColor="#c0c0c0" BorderWidth="1" /> <ItemStyle BorderColor="#c0c0c0" BorderWidth="1" BackColor="White" /> <HeaderTemplate> 标准值 <%--只接受正小数--%> </HeaderTemplate> <ItemTemplate> <asp:TextBox ID="TextBoxBiaoZhunZh" runat="server" Text='<%# Eval("BiaoZhunZhi") %>' CssClass="number-input" data-allow-negative="false" oninput="validateNumber(this)" onkeydown="return allowNumberKeys(this, event)"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <HeaderStyle BorderColor="#c0c0c0" BorderWidth="1" /> <ItemStyle BorderColor="#c0c0c0" BorderWidth="1" BackColor="White" /> <HeaderTemplate> 替代公差 <%--接受正或负小数--%> </HeaderTemplate> <ItemTemplate> <asp:TextBox ID="TextBoxTiDaiGongChai" runat="server" Text='<%# Eval("TiDaiGongChai") %>' CssClass="number-input" data-allow-negative="true" oninput="validateNumber(this)" onkeydown="return allowNumberKeys(this, event)"></asp:TextBox> </ItemTemplate> </asp:TemplateField>
Insus.NET刚开始按下面代码来实现的,
验证整数,
onkeyup="value=value.replace(/[^\d]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
验证小数,
onkeyup="value=value.replace(/[^-?\d\.]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^-?\d\.]/g,''))"
这样写法,会有问题,用户可以输入多个负符号或多个小数点。
只有写javascript来实现,

var lastValidValueKey = 'data-last-valid'; // 初始化所有数字输入框 function initNumberInputs() { var inputs = document.querySelectorAll('.number-input'); for (var i = 0; i < inputs.length; i++) { var input = inputs[i]; input.setAttribute(lastValidValueKey, input.value); } } // 验证输入并更新合法值 function validateNumber(input) { var value = input.value; // 根据 data-allow-negative 选择正则 var allowNegative = input.getAttribute('data-allow-negative') === 'true'; var pattern; if (allowNegative) { // 允许正负小数:可选的负号,后面跟数字和小数点(最多一个小数点) pattern = /^-?(?:\d+\.?\d*|\.\d+)?$/; } else { // 只允许非负小数:只能有数字和一个小数点,不能有负号 pattern = /^\d*\.?\d*$/; } if (pattern.test(value)) { input.setAttribute(lastValidValueKey, value); } else { var lastValid = input.getAttribute(lastValidValueKey); if (lastValid !== null) { input.value = lastValid; } else { input.value = ''; } } } // 按键过滤(根据是否允许负号动态允许/禁止负号键) function allowNumberKeys(input, e) { var key = e.key; // 始终允许功能键(退格、删除、箭头等) if (key.length > 1) { return true; } // 允许数字和小数点 if (/[\d\.]/.test(key)) { return true; } // 如果允许负号,且按键是负号,则允许 var allowNegative = input.getAttribute('data-allow-negative') === 'true'; if (allowNegative && key === '-') { return true; } // 其他按键(如字母)禁止 return false; } // 页面加载完成后初始化 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initNumberInputs); } else { initNumberInputs(); }

浙公网安备 33010602011771号