javaScript函数不能在我的ASP.Net控件上工作
问题描述:
我有一个验证器控件,当我向其中添加java脚本函数时它不起作用,并且我尝试更改它的按钮文本不起作用。代码是娄javaScript函数不能在我的ASP.Net控件上工作
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function clientValidate(source, args)
{
if (parseInt(args.Value) < 10)
{
return source.IsValid = false;
}
else
{
return source.IsValid = true;
}
}
function Alert(ctr)
{
alert("Hello");
ctr.Text = "clicked";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Value Must not be Below 10" ClientValidationFunction="clientValidate" OnServerValidate="CustomValidator1_ServerValidate" ControlToValidate="txt" Display="Dynamic" ForeColor="#FF5050"></asp:CustomValidator>
<asp:TextBox ID="txt" runat="server" AutoPostBack="true" ></asp:TextBox>
<asp:Button ID="btn1" runat="server" Text="Button" OnClientClick="Alert(btn1)" />
</div>
</form>
</body>
</html>
一说的是,警报脚本工作,但按钮上的文字并没有得到改变的事情。
另一件事是验证器的服务器端事件是在单独的cs文件中。
感谢您的帮助。
答
您在客户端验证功能中使用参数不正确。正确的用法就是这样。
function clientValidate(source, args)
{
//sender is <span...>err</span> extended properties include controltovalidate
//args is {Value: 123, IsValid: true}
if (parseInt(args.Value) < 10)
{
args.IsValid = false; //not source and no return
//other logic
}
else
{
//args.IsValid = true; //redundant. **true** is default value
//return source.IsValid = true; //see above
//other logic
}
}
至于Alert
函数。该功能是正确的,可能工作。通话不正确。像这样调用函数。
<asp:Button ID="btn1" runat="server" Text="Button" OnClientClick="Alert(this)" />
注意this
参数在调用中。
更新评论/额外的问题
定制Alert
功能可能需要更多的参数。像这样的东西。
function Alert(ctr, msg, evt) {
if (evt)
evt.preventDefault();
switch (ctr.tagName.toLowerCase()) {
case 'input':
case 'textarea':
ctr.value = msg;
break;
case 'div':
ctr.innerHTML = msg;
break;
default:
alert(msg);
break
}
return false;
}
<input type="button" value="Click Me" onclick="return Alert(this,'clicked',event);" /><br />
<div onclick="Alert(this,'div is clicked')">Click div</div>
答
客户端不知道文本和它的唯一可访问的服务器上。 您应该使用客户端属性来代替。
使用这样的:使用的JS功能
function Alert(ctr)
{
alert("Hello");
document.getElementById(ctr).value= "clicked";
}
和
<input type="button" id="btn1" value="Button" onClick="Alert('btn1')"/>
防止服务器上做回发。
+0
以及1:谢谢你的答复。 第二:我想对ASP.Net控件执行javascript效果。 第三个是我的主要问题(验证器)仍然存在。 – Heydar
谢谢兄弟,第一个工作正常。但在第二部分。我想要灵活的例如发送一个在页面中的其他对象(例如,在原始帖子中看到的具有txt ID的asp:textbox控件)以提醒并获取它的值,然后将它添加到allert消息中,这可能吗? ==> 函数警报(ctr) { alert(“Hello”+ ctr.Text); } 或者这样做==> 功能警报(ctr) { alert(“Hello”); ctr.Text =“clicked”; } 可以做? – Heydar
据我所知,我不能发送asp:控制到javascript方法。所以它必须是HTML控制。是吗? – Heydar
不完全。 'asp:controls'呈现为HTML元素。小心一点。 –