问题: 我想要做的是当我退出已添加到视图中的文本框时,表单提交事件会激活。
详细说明: 我在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()'怎么能在代码不存在的控件上触发?
答案 0 :(得分:2)
好的,我明白了。上一页使用相同的Model元素'r.Notes'。这个页面有form.submit事件,这就是我正在编辑的页面上触发提交的内容。我将textareafor重命名为html.textArea控件,并将其重命名为MyNotes作为id并且不提交。