1

GridViewの2つのセルにある2つのテキストボックスにJavaScriptを添付して、入力中に同じセルに別の2つのテキストボックスを自動的に入力します。

最初のテキストボックスでは正常に機能しますが、2番目のテキストボックスに入力すると、「Uncaught TypeError:Undefinedのプロパティ'value'を設定できません」というエラーが発生します。

これが私のJavaScriptです:

function Sync(obj, idx) {
    var cell = obj.parentNode;
    cell.parentNode.cells[cell.cellIndex + 2].getElementsByTagName("input")[idx].value = obj.value;
}

グリッドビュー:

<asp:TemplateField HeaderText="Country Code">
                                <EditItemTemplate>
                                    <asp:TextBox ID="txtCountryCode" runat="server" Text='<%# Eval("CountryCode") %>' OnKeyUp="javascript:Sync(this, 0);"></asp:TextBox>
                                    <br />
                                    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" ControlToValidate="txtCountryCode" ValidationExpression="\d{1,3}" EnableClientScript="false" 
                                        ErrorMessage="The Country Code must be 1-3 numeric digits!" runat="server"
                                        ForeColor="Red" Font-Size="Smaller">
                                    </asp:RegularExpressionValidator>
                                </EditItemTemplate>
                                <ItemTemplate>
                                    <asp:Label ID="lblCountryCode" runat="server" Text='<%# Eval("CountryCode") %>'></asp:Label>
                                </ItemTemplate>
                                <FooterTemplate>
                                    <asp:TextBox ID="txtNewCountryCode" runat="server"></asp:TextBox>
                                    <br />
                                    <asp:RegularExpressionValidator ID="RegularExpressionValidator2" ControlToValidate="txtNewCountryCode" ValidationExpression="\d{1,3}" EnableClientScript="false" 
                                        ErrorMessage="The Country Code must be 1-3 numeric digits!" runat="server"
                                        ForeColor="Red" Font-Size="Smaller">
                                    </asp:RegularExpressionValidator>
                                </FooterTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Main Number">
                                <EditItemTemplate>
                                    <asp:TextBox ID="txtMainNumber" runat="server" Text='<%# Eval("MainNumber")%>' OnKeyUp="javascript:Sync(this, 1);"></asp:TextBox>
                                    <br />
                                    <asp:RegularExpressionValidator ID="RegularExpressionValidator3" ControlToValidate="txtMainNumber" ValidationExpression="\d{1,14}" EnableClientScript="false" 
                                        ErrorMessage="The Country Code must be 1-14 numeric digits!" runat="server"
                                        ForeColor="Red" Font-Size="Smaller">
                                    </asp:RegularExpressionValidator>
                                </EditItemTemplate>
                                <ItemTemplate>
                                    <asp:Label ID="lblMainNumber" runat="server" Text='<%# Eval("MainNumber")%>'></asp:Label>
                                </ItemTemplate>
                                <FooterTemplate>
                                    <asp:TextBox ID="txtNewMainNumber" runat="server"></asp:TextBox>
                                    <br />
                                    <asp:RegularExpressionValidator ID="RegularExpressionValidator4" ControlToValidate="txtNewMainNumber" ValidationExpression="\d{1,14}" EnableClientScript="false" 
                                        ErrorMessage="The Country Code must be 1-14 numeric digits!" runat="server"
                                        ForeColor="Red" Font-Size="Smaller">
                                    </asp:RegularExpressionValidator>
                                </FooterTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Phone">
                                <ItemTemplate>
                                    <asp:Label ID="lblPhone" runat="server" Text='<%# Eval("Phone") %>' Enabled="false"></asp:Label>
                                </ItemTemplate>
                                <EditItemTemplate>
                                    +
                                    <asp:TextBox ID="txtPhoneCountryCode" runat="server" Enabled="false" Text='<%# Eval("CountryCode") %>' Width="30px"></asp:TextBox>
                                    <asp:TextBox ID="txtPhoneMainNumber" runat="server" Enabled="false" Text='<%# Eval("MainNumber")%>' Width="100px"></asp:TextBox>
                                </EditItemTemplate>
                                <FooterTemplate>
                                    <asp:TextBox ID="txtNewPhone" runat="server" Enabled="false"></asp:TextBox>
                                </FooterTemplate>
                            </asp:TemplateField>
4

1 に答える 1

1

FooterTemplateテキストボックスに関連するtxtMainNumberテキストボックスは1つしかありtxtNewMainNumberませんが、存在しない2番目のテキストボックスを設定しようとしました。次を変更してください

OnKeyUp="javascript:Sync(this, 1);"

OnKeyUp="javascript:Sync(this, 0);"
于 2012-11-08T13:32:18.383 に答える