繁体   English   中英

MVC文本框上的JScript更改功能未触发事件

[英]JScript change function on MVC textboxfor event not firing

因此,我有一个在for循环中创建的文本框,该文本框需要在更改时自动提交表单。 我在另一个页面上工作,但没有在循环中创建。 我的代码如下:

   using (Ajax.BeginForm("ReportInput","Reports",new AjaxOptions() { UpdateTargetId = "refresh", InsertionMode = InsertionMode.Replace }, new { @id = "refresh" }))
   {
.......for loop{
      //id of textbox <- only one of these textboxs is created at the moment.
      var temp = "#InputParameters_" + i +"__Value";
       <script type="text/javascript">
          $('@temp').change(function () {
          $('#refresh').submit();
          });
       </script>
       @Html.TextBoxFor(modelitem => Model.InputParameters[i].Value)
.......}
   }

使用萤火虫时,单击文本框会弹出以下错误。

ReferenceError:引用未定义的属性jQuery.event.triggered return event.result; jquery-1.9.1.js(第3091行)ReferenceError:对未定义属性src.returnValue的引用this.isDefaultPrevented =(src.defaultPrevented || src.returnValue === false | jquery-1.9.1.js(第3345行)不赞成使用getPreventDefault()的方法。请改用defaultPrevented。src.getPreventDefault && src.getPreventDefault())吗? returnTrue:returnFalse; jquery-1.9.1.js(第3346行)ReferenceError:对未定义属性的引用event.result return event.result;

生成的HTML:

<form id="refresh" method="post" data-ajax-update="#refresh" data-ajax-mode="replace" data-ajax="true" action="/Reports/ReportInput?Length=7">

<script type="text/javascript">
$('#InputParameters_0__Value').change(function () {
$('#refresh').submit();
});
</script>
<input id="InputParameters_0__Value" type="text" value="" name="InputParameters[0].Value">

我很困惑为什么这不起作用,任何帮助将不胜感激。

我认为一种更好的方法是将您的javascript块置于for循环之外,并考虑到所有文本框ID均以相同的单词“ InputParameters”开头,这是我的解决方案:

1-您将正常生成HTML,只需从循环中删除呈现javascript的部分即可。

2-在页面末尾,放入类似于以下代码的代码块

<script type="text/javascript">
$(function(){
  $('[id^="InputParameters"]').change(function () {
  $('#refresh').submit();
  });
})
</script>

此代码应获取所有以“ InputParameters”字开头的ID的文本框,然后按常规将处理程序附加到change事件。

这样会更好,因为它以文本框为目标,而不管结尾处随机添加的字符串如何,并且应该可以按预期工作。

让我知道这是否对您有用,或者您仍然需要对该代码进行调整。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM