我只想问为什么我的asp文本框的表单验证无效。应该就像用户没有在文本框中输入文本一样,段落标签中的描述将显示为请输入文本。但它没有用。请帮我解决这个问题。
以下是javascript代码:
function checkForm() {
var errors = [];
if ($("#itemBrand").value == "") {
errors[0] = "Please input a text!";
}
if ($("#itemModel").value == "") {
errors[1] = "Please input a text!";
}
if (errors.length > 0) {
if (errors[0] != null) {
document.getElementById("itemBrandValidate").innerHTML = errors[0];
}
if (errors[1] != null) {
document.getElementById("itemModelValidate").innerHTML = errors[1];
}
return false;
}
return true;
}
这是aspx:
<asp:TextBox ID="itemBrand" runat="server" BackColor="#FFFF66"
BorderColor="Black" BorderWidth="1px" Height="20px" Width="300px">
</asp:TextBox><br />
<p id="itemBrandValidate"></p>
<asp:TextBox ID="itemModel" runat="server" BackColor="#FFFF66"
BorderColor="Black" BorderWidth="1px" Height="20px" Width="300px">
</asp:TextBox><br />
<p id="itemModelValidate"></p>
<asp:Button ID="Button1" runat="server" CssClass="submitButton" Text="Save
Item" OnClick="Button1_Click" OnClientClick="return checkForm()"/>
答案 0 :(得分:0)
添加ClientIdMode =&#34;静态&#34;在你的文本框上。否则.NET平台生成的Id与服务器ID属性不同,并且您的Jquery选择器未按预期工作。
例如:
<asp:TextBox ID="itemBrand" ClientIDMode="static" runat="server" BackColor="#FFFF66"
BorderColor="Black" BorderWidth="1px" Height="20px" Width="300px">
</asp:TextBox>
答案 1 :(得分:0)
asp.net服务器控件的客户端ID与服务器端ID不同。
您可以使用libcspice.a
(在.NET 4.0中引入),也可以使用ClientIDMode = "Static"
,如下所示,我也尝试重新编写您的验证功能。
ClientID
同时建议您阅读Rick Strahl在A generic way to find ASP.NET ClientIDs with jQuery
上发表的这篇优秀文章希望这有帮助!