我有一个验证器控件,当我向它添加java Script函数时它没有工作,我试图改变它的按钮文本它也不起作用。代码是Bellow
<%@ 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文件中。
感谢您的帮助。
答案 0 :(得分:0)
客户端不知道Text,它只能在服务器上访问。 你应该使用客户端属性。
使用它:
<input type="button" id="btn1" value="Button" onClick="Alert('btn1')"/>
和
fid = fopen('myfile.byt','r');
data = fread(fid,inf,'single');
fclose(fid);
% Manipulate your data, then...
fid = fopen('myfile_new.byt','w');
fwrite(fid,data(:),'single');
fclose(fid);
使用js函数可以防止在服务器上进行回发。
答案 1 :(得分:0)
您在客户端验证功能中对参数的使用不正确。正确使用是这样的。
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;
}
&#13;
<input type="button" value="Click Me" onclick="return Alert(this,'clicked',event);" /><br />
<div onclick="Alert(this,'div is clicked')">Click div</div>
&#13;