【问题标题】:IE Form Submit Empty yet works with type=checkboxIE 表单提交为空,但适用于 type=checkbox
【发布时间】:2015-08-21 14:23:44
【问题描述】:

我已经查看了几十个类似的问题,但大多数解决方案都实现了隐藏输入或扩展 javascript,但没有一个解决方案能够回答为什么一种输入有效而另一种无效。

此问题是 Internet Explorer 特有的,适用于 Chrome 和 FF。

这是我创建表单的代码:

@foreach (hello.Data.Models.Button btn in Model.Content.Buttons.OrderBy(b => b.Action))
    {
        if (btn.Action == "Close Message" && (Model.SurveyAuditExists == true || Model.SurveyContent == null))
        {                                
             <li class="response-button-item">
                 <input type="submit" class="response-button" name="@btn.Text" id="@btn.Text" onclick="submitForm.submit();" value="@hello.Biz.Helpers.ExtensionMethods.TrimString(btn.Text, new char[] { '&' })" />                                                                
             </li>
         }

下面是生成的 HTML 示例:

<form id="submitForm" action="/Go/Here/39354" method="post">  
      <ul id="response-button-list">             
          <li class="response-button-item">
              <input name="&amp;Agree" class="response-button" id="&amp;Agree" onclick="submitForm.submit();" type="submit" value="Agree">                                                                
          </li>
          <li class="response-button-item">
               <input name="&amp;Disagree" class="response-button" id="&amp;Disagree" onclick="submitForm.submit();" type="submit" value="Disagree">                                                                
          </li>
      </ul>                   

因此,当我在 Chrome/FF 上单击同意或不同意时,它会返回用户是否同意或不同意,但在 IE 中它返回空白并导致错误,因为 FormCollection 和 AllKeys 在我的控制器中为空。

将输入类型更改为复选框并单击该框可以在 IE 中正确提交。

我在页面中没有嵌套表单。

任何帮助将不胜感激!

【问题讨论】:

  • 为什么有&lt;input type="submit" ..,然后加上onclick="submitForm.submit();?并且只需给您输入相同的name 属性(例如name="Action",这样您就可以在post 方法中检查"Action" 的值(最好通过在方法中添加参数string Action - 它的值将是“同意”或“不同意”取决于点击的按钮)
  • @StephenMuecke 删除那个 onclick 解决了这个问题。这被用于复选框,但如果输入类型是提交,显然不需要。谢谢。

标签: asp.net forms asp.net-mvc-4 internet-explorer razor


【解决方案1】:

根据@stephenmuecke 的评论,我在没有 JavaScript 的情况下测试了按钮

onclick="submitForm.submit();"

显然这与输入 type="submit" 竞争,删除 onclick 属性解决了所有问题。

所以最后这个错误都是我的错,希望这个信息可以帮助其他人比我更快地注意到这一点。

【讨论】:

    猜你喜欢
    • 2012-10-27
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 2020-04-27
    • 2018-01-08
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    相关资源
    最近更新 更多