我试图在我的MasterPage中验证输入框的搜索引擎,我已经使用了custome validator,但它没有验证,而是带我去搜索结果。默认情况下,输入框的值为“Name ...”,因此在搜索时单击它会搜索“Name ...”。
此外,我在联系我们页面上提交了按钮,当我点击按钮时发生了abve验证,这与上述搜索功能无关。我的代码是参考: -
<script>
function nameNull(oSrc, args) {
if (name.Value.Trim() == "Name..." || name.Value.Trim() == "") {
args.IsValid = false;
}
else {
args.IsValid = true;
}
}
</script>
<input type="text" id="name" runat="server" value="Name..." name="name" onblur="doDefault(this)" onfocus="doClear(this)" />
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Please enter name"
ControlToValidate="name" ClientValidationFunction="nameNull"
ForeColor="#FF3300" Font-Bold="True"></asp:CustomValidator>
答案 0 :(得分:1)
首先,您尝试按ID访问HTML元素。要获取元素,您需要使用document.getElementById JS方法。
然后使用runat =“server”属性标记输入字段。这将导致ASP.NET将呈现与您在ASP.NET标记中指定的ID不同的ClientID。因此,要访问您的元素,您需要使用服务器控件的ClientID值:
<script type="text/javascript">
function nameNull(oSrc, args) {
var element = document.getElementById('<%= this.name.ClientID %>');
var value = element.value.trim();
if (value == "Name...") {
args.IsValid = false;
}
else {
args.IsValid = true;
}
}
</script>
如您所见,第二点是JavaScript区分大小写,您需要使用 value.trim(); 。
最后一个:要检查该元素是否至少有价值,最好使用必需的字段验证器。因此,您的标记应修改为:
<input type="text" id="name" runat="server" value="Name..." name="name" />
<asp:RequiredFieldValidator ID="NameFieldRequiredFieldValidator" ErrorMessage="Please enter name" ControlToValidate="name" />
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Please enter name" ControlToValidate="name" ClientValidationFunction="nameNull"
ForeColor="#FF3300" Font-Bold="True"></asp:CustomValidator>
答案 1 :(得分:0)
不应使用name.Value,而应使用getElementsbyname [“name”] / getElementsbyId [“name”]。这将有效.....