Невозможно установить значение во втором текстовом поле той же ячейки

У меня есть javascript, прикрепленный к двум текстовым полям в двух ячейках GridView, который автоматически вводит еще два текстовых поля в одну и ту же ячейку при наборе текста.

Он отлично работает для первого текстового поля, но я получаю сообщение об ошибке "Uncaught TypeError: Невозможно установить свойство" значение "из неопределенного" при наборе текста во втором текстовом поле.

Вот мой 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>

1 ответ

Решение

FooterTemplate связано с вашим txtMainNumber текстовое поле содержит только 1 текстовое поле txtNewMainNumber но вы попытались установить его второе текстовое поле, которое не существует, измените следующее

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

с

OnKeyUp="javascript:Sync(this, 0);"
Другие вопросы по тегам