删除代码后,this.form.submit()仍然会触发

时间:2013-06-17 19:59:49

标签: javascript html asp.net-mvc-3 html-helper

问题: 我想要做的是当我退出已添加到视图中的文本框时,表单提交事件会激活。

详细说明: 我在MVC应用程序中有一个视图,我在视图的底部添加了三个文本框。在添加之前,我有一个Html帮助文本区域,当我选中它时触发了this.form.submit:

<%=Html.TextAreaFor(r => r.Notes, new { @class = "textAreaNoScroll", @onblur = "this.form.submit();"} })%>

在更改之前,这是页面底部的最后一个控件。我已经删除了代码@onblur ...并将其粘贴到了,现在是什么,最后一个控件:

<%=Html.TextBoxFor(acc => acc.AccountNumber, new { @onblur = "this.form.submit();"}) %>

但是当我现在调试时,视图仍然在textarea上使用id“r.Notes”进行提交。

修正: 首先,我从浏览器(Chrome)中查看“查看来源”中的标记。这些变化是正确的。我清除了浏览器缓存,但没有区别。这是相关的代码段:

 <asp:Panel ID="pnlProcessingInstructions" runat="server">            
            <table class="displayBox-topBottom">
                <tr>
                    <td class="labels displayInput_noWidth">Processing Notes</td>
                    <td class="labels displayInput_noWidth">Instructions</td>
                </tr>
                <tr>
                    <%if (Model != null && Model.PaymentDayId != -1)
                      { %>
                        <td><%=Html.TextAreaFor(r => r.ProcessingNotes, new { @class = "textAreaNoScroll" })%></td>
                    <%}
                      else
                      {%>
                        <td><%=Html.TextAreaFor(r => r.ProcessingNotes, new { @class = "textAreaNoScroll" })%></td>
                    <%}%>
                    <td><%=Html.TextAreaFor(r => r.Notes, new { @class = "textAreaNoScroll" })%></td> <!-- FORMER LAST CONTROL -->
                </tr>              
                <tr>
                    <td><span id = "ProcessingCharsLeft" class="smallerFont">1,000</span> characters left</td>
                    <td><span id = "CharsLeft" class="smallerFont">1,000</span> characters left</td>
                </tr>
            </table>
            </asp:Panel>
           </fieldset>
           <fieldset>
        <legend class="labels"> Payment Details</legend>

          <asp:Panel ID="pnlPaymentDetails" runat="server">            
            <table class="displayBox-topBottom">
                <tr>
                    <td class="labels displayInput_noWidth">Institution</td>
                    <td class="labels displayInput_noWidth">Transit</td>
                    <td class="labels displayInput_noWidth">Account Number</td>
                </tr>
                <tr>
                    <td><%=Html.TextBoxFor(i => i.Institution) %></td>
                    <td><%=Html.TextBoxFor(tr => tr.TransitNumber) %></td>
                    <td><%=Html.TextBoxFor(acc => acc.AccountNumber, new { @onblur = "this.form.submit();"}) %></td> <!-- NEW LAST CONTROL -->
                </tr>
                </table>
               </asp:Panel>  

它永远不会超过'r.Notes',并且好像'this.form.submit'仍然是控件的一部分。我再次清除了缓存并重建了我的解决方案。 'this.form.submit()'怎么能在代码不存在的控件上触发?

1 个答案:

答案 0 :(得分:2)

好的,我明白了。上一页使用相同的Model元素'r.Notes'。这个页面有form.submit事件,这就是我正在编辑的页面上触发提交的内容。我将textareafor重命名为html.textArea控件,并将其重命名为MyNotes作为id并且不提交。