Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新时如何使用javascript验证asp.net gridview文本框?_Javascript_Asp.net - Fatal编程技术网

更新时如何使用javascript验证asp.net gridview文本框?

更新时如何使用javascript验证asp.net gridview文本框?,javascript,asp.net,Javascript,Asp.net,我的aspx页面上有一个gridview: <asp:GridView ID="gvPhoneBook" runat="server" AutoGenerateColumns="false" ShowFooter="true" DataKeyNames="PhoneBookID" ShowHeaderWhenEmpty="true" OnRowCommand="gvPhoneBook_RowCommand"

我的aspx页面上有一个gridview:

<asp:GridView ID="gvPhoneBook" runat="server" AutoGenerateColumns="false" 
            ShowFooter="true" DataKeyNames="PhoneBookID"
            ShowHeaderWhenEmpty="true"

            OnRowCommand="gvPhoneBook_RowCommand" 
            OnRowEditing="gvPhoneBook_RowEditing" OnRowCancelingEdit="gvPhoneBook_RowCancelingEdit"
            OnRowUpdating="gvPhoneBook_RowUpdating" OnRowDeleting="gvPhoneBook_RowDeleting">

            <Columns>
                <asp:TemplateField HeaderText="First Name">
                    <ItemTemplate>
                        <asp:Label Text='<%# Eval("FirstName") %>' runat="server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txtFirstName" Text='<%# Eval("FirstName") %>' runat="server" />
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="txtFirstNameFooter" runat="server" />
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Last Name">
                    <ItemTemplate>
                        <asp:Label Text='<%# Eval("LastName") %>' runat="server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txtLastName" Text='<%# Eval("LastName") %>' runat="server" />
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="txtLastNameFooter" runat="server" />
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Contact">
                    <ItemTemplate>
                        <asp:Label Text='<%# Eval("Contact") %>' runat="server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txtContact" Text='<%# Eval("Contact") %>' runat="server" />
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="txtContactFooter" runat="server" />
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Email">
                    <ItemTemplate>
                        <asp:Label Text='<%# Eval("Email") %>' runat="server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txtEmail" Text='<%# Eval("Email") %>' runat="server" />
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="txtEmailFooter" runat="server" />
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:ImageButton ImageUrl="~/Images/edit.png" runat="server" CommandName="Edit" ToolTip="Edit" Width="20px" Height="20px"/>
                        <asp:ImageButton ImageUrl="~/Images/delete.png" runat="server" CommandName="Delete" ToolTip="Delete" Width="20px" Height="20px"/>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:ImageButton ImageUrl="~/Images/save.png" runat="server" OnClientClick="return Validate(this);" CommandName="Update" ToolTip="Update" Width="20px" Height="20px"/>
                        <asp:ImageButton ImageUrl="~/Images/cancel.png" runat="server" CommandName="Cancel" ToolTip="Cancel" Width="20px" Height="20px"/>
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:ImageButton ImageUrl="~/Images/addnew.png" runat="server" CommandName="AddNew" ToolTip="Add New" Width="20px" Height="20px"/>
                    </FooterTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

我想在更新时验证电子邮件字段(不应为空)

以下是我尝试过的:-

function validate() 
{ 
 if(document.getElementById("<%=txtEmail.ClientID%>").value‌​=="")
 { 
 alert("Email Field can not be blank"); 
 document.getElementById("<%=txtEmail.ClientID%>").focus(‌​); 
 return false; 
 } 
 return true; 
 }
函数验证()
{ 
if(document.getElementById(“”)值‌​=="")
{ 
警报(“电子邮件字段不能为空”);
document.getElementById(“”).focus(‌​); 
返回false;
} 
返回true;
}
但由于当前上下文中不存在txtEmail,因此出现错误

我也使用了这种方法:-

<script type="text/javascript">
    function Validate(lnkUpdate) {
     var txtEmail;
     var row = lnkUpdate.parentNode.parentNode;
     txtEmail = row.getElementsByID("txtEmail");

     if (txtEmail.value == null) {
         alert("Email Field can not be blank"); 
     }
     }

功能验证(lnkUpdate){
var-txtEmail;
var row=lnkUpdate.parentNode.parentNode;
txtEmail=row.getElementsByID(“txtEmail”);
if(txtEmail.value==null){
警报(“电子邮件字段不能为空”);
}
}
我在更新按钮上调用此方法
但这也不起作用。我如何使用javascript实现这一点?我哪里做错了?

您可以向按钮添加一个类

<EditItemTemplate>
                        <asp:ImageButton ImageUrl="~/Images/save.png" runat="server" class="button_save" CommandName="Update" ToolTip="Update" Width="20px" Height="20px"/>
                        <asp:ImageButton ImageUrl="~/Images/cancel.png" runat="server" CommandName="Cancel" ToolTip="Cancel" Width="20px" Height="20px"/>
                    </EditItemTemplate>

然后听javascript中类的事件单击

var buttonSave = document.getElementsByClassName("button_save");

for (var i = 0; i < buttonSave.length; i++) {
    buttonSave[i].addEventListener('click', Validate(buttonSave[i]), false);
}
var buttonSave=document.getElementsByClassName(“按钮保存”);
对于(变量i=0;i
我认为您应该研究aspnet验证控件

<asp:TextBox ID="txtEmail" Text='<%# Eval("itemid") %>' runat="server" />
<br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ErrorMessage="Email Field can not be blank" ControlToValidate="txtEmail"
  ValidationGroup="inGridView"></asp:RequiredFieldValidator>

有几种不同的类型,可以从代码隐藏中进行操作。请参阅文档:

What's OnClientClick?为什么不使用onclick=“Validate(this)”?我两个都试过了。@UrielChami,但都没有成功这是正确的打印吗?@UrielChami我不明白你的意思。在第一个方法中,当我执行程序时,它说“txtEmail”在当前上下文中不存在噢,好的,很抱歉,我的朋友你没有正确地捕获事件,我从来没有听说过“OnClient Click”但我假设这是一个ASP net方法。它会转到服务器端,而不是客户端。另一方面,onclick=“”“本来应该有效的,谢谢你的回答,但我必须验证使用javascript,这就是问题所在。我可以问为什么?因为你可以在GridView中使用这些控件,而不必使用
之类的东西。我也更容易维护。如果你真的需要使用javascript,我建议使用jQuery library喜欢做所有的验证。
<asp:ImageButton runat="server" ValidationGroup="inGridView" />