function ValidateShippedQuantity() {
var shippedQty = jQuery("#txtShippedQuantity").val();
shippedQty = shippedQty.toString();
for (i = 0; i < shippedQty.length; i++) {
var c = shippedQty.charAt(i);
if (isNaN(c)) //(!(/^\d+$/.test(shippedQty)))
{
alert("Only Numeric Values Allowed");
//x.focus();
return false;
}
}
return true;
}
我想要的是检查仅包含数值的文本框。上面的函数 isNaN 或 /^\d+$/.test() 不起作用,因为无论我输入什么,例如“1”或“10”,它总是返回 false。更奇怪的是,isNaN 曾经工作了一段时间。然后无论我做什么,它都不起作用。
调用验证功能的按钮位于 Gridview 中。
<EditItemTemplate>
<asp:LinkButton ID="btnUpdTrk" runat="server" Text="Update" CommandName="Update"
OnClientClick="javascript:return ValidateShippedQuantity();" CausesValidation="false" />
</EditItemTemplate>
txtShippedQuantity 的文本框,
<asp:TemplateField HeaderText="Shipped Qty">
<ItemTemplate>
<asp:Label ID="lblShippedQuantity" runat="server" Text='<%#Eval("ShippedQuantity")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtShippedQuantity" Width="50px" Text='<%#Eval("ShippedQuantity")%>' />
</EditItemTemplate>
</asp:TemplateField>
对于那些有同样问题的人,答案或解决方案如下。 这是在令人失望的过程之后自己解决问题的真正快乐。@cymen 给了我一点帮助。我将一行代码更改为他的代码。
$(document).ready(function () {
$('#btnUpdTrk').on('click', ValidateShippedQuantity);
});
function ValidateShippedQuantity() {
var shippedQty = document.getElementById('ContentPlaceHolder1_gvTrkInfo_txtShippedQuantity_0').value;
var shippedQtyNumber = parseInt(shippedQty, 10);
if (shippedQtyNumber.toString() !== shippedQty) {
alert("Only Numeric Values Allowed for Tracking #.");
return false;
}
return true;
}
@cymen 代码的第二行是我的 aspx 页面出现问题的原因,至少在编辑后我得到了我想要的。我认为这是 getTlementById 部分。从谷歌浏览器开发者工具中找到正确的 txtbox txtShippedQuantity ID 后。