javaScript函数不能在我的ASP.Net控件上运行

时间:2017-11-25 14:03:00

标签: javascript c# jquery asp.net

我有一个验证器控件,当我向它添加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>
            &nbsp;&nbsp;
            <asp:TextBox ID="txt" runat="server" AutoPostBack="true" ></asp:TextBox> 
            &nbsp; 
            <asp:Button ID="btn1" runat="server" Text="Button" OnClientClick="Alert(btn1)" />

        </div>
    </form>
</body>
</html>

有一点要说,警报脚本有效,但按钮文字没有改变。

另一件事是验证器的服务器端事件在单独的cs文件中。

感谢您的帮助。

2 个答案:

答案 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函数可能需要更多参数。这样的事情。

&#13;
&#13;
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;
&#13;
&#13;