我想从客户端执行添加按钮单击事件(服务器端)。
这是我的javascript函数
function validateinput() {
var arrTextBox = document.getElementsByTagName("input");
var retVal = 1;
for (i = 0; i < arrTextBox.length; i++) {
if (arrTextBox[i].type == "text" && arrTextBox[i].value == "") {
retVal = 0;
}
}
if (retVal == 0) {
alert("Validation Failed");
return false;
}
else {
alert("Validation Success");
return true;
__doPostBack(btnAddItem);
}
}
我仅在警报(“验证成功”)时调用服务器端代码并返回true。
这是我的服务器端代码
protected void Page_Load(object sender, EventArgs e)
{
txtbox1.Attributes.Add("onkeydown", "if(event.keyCode) {if (event.keyCode > 57 && event.keyCode <= 90) return false; } else {return true};");
if (!IsPostBack)
{
//The code is too big to be posted
}
}
protected void btnAddItem_Click(object sender, EventArgs e)
{
if (IsValidPost())
{
if (btnAddItem.Text == "Add Item +")
{
if (textbox1.text== "")
{
Addtogrid();
}
}
}
}
我是以正确的方式做到的吗?因为我没有得到预期的结果。我也在Page.GetPostBackEventReference(btnAddItem)中收到错误;说ClientScript是一种推荐的方式。当我尝试使用ClientScript.GetPostBackEventReference(btnAddItem);它会抛出一个错误,指出无法识别ClientScript。
请帮忙
答案 0 :(得分:0)
如果使用验证控件进行设置,则asp:button对象的onclick事件将调用client validation。如果您尚未将onclick事件设置为按钮,则无法知道要调用的方法。如果您已设置onclick,则不需要javascript调用。如果您设置验证控件以使用验证脚本和客户端验证.net将处理回发调用。在查看脚本时,使用required field validator比使用自定义脚本更好。
答案 1 :(得分:0)
您确定在页面加载方法中需要GetPostBackEventReference代码吗? _doPostBack()不是要引用的目标对象,只是名称。
编辑:为什么在调用_doPostBack()之前调用return true?
编辑2:有两种方法可以从.NET代码here调用GetPostBackEventReference,1)但这是一种过时的方法,建议使用客户端脚本版本,2)来自客户端脚本{{ 3}}。我无法分辨您使用的是哪种方法,因为您没有发布页面加载代码。我没有理由根据您发布的其他代码来调用它。对_doPostBack()的调用可以在不获取控件的回发引用的情况下运行。
删除对GetPostBackEventReference的调用并将您的javascript更改为如下所示:
function validateinput() {
var arrTextBox = document.getElementsByTagName("input");
var ddlTextBox = document.getElementsByTagName("select");
var retVal = 1;
for (i = 0; i < arrTextBox.length; i++) {
if (arrTextBox[i].type == "text" && arrTextBox[i].getAttribute("IsMandatory") == "Y" && arrTextBox[i].value == "") {
retVal = 0;
}
}
if (retVal == 0) {
alert("Validation Failed");
return false;
}
else {
alert("Validation Success");
__doPostBack('btnAddItem', '');
return true; // This shouldn't be needed but it does need to come after _doPostBack()
}
}
编辑3:尝试按钮的以下代码:
<asp:Button ID="btnAddItem" runat="server" onclick="btnAddItem_Click" OnClientClick ="javascript:validateinput(); return false;" Text="Add Item +" Width="85px" />
如果您不希望它回发到表单,则OnClientClick代码需要返回false。即使你从一个被调用的JavaScript方法返回false,它仍然会回发。这对我来说从来没有意义,但我通过反复讨论这个问题来学习它。