MVC文本框上的JScript更改函数,用于未触发事件

时间:2014-03-24 09:29:26

标签: javascript jquery html asp.net-mvc razor

所以我有一个在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)
.......}
   }

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

  

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&amp;&amp; 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">

我难以理解为什么这不起作用,任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

我认为更好的方法是将你的javascript块放在for循环之外,考虑到你的所有文本框ID都以相同的单词开头&#34; InputParameters&#34;,这是我的思维解决方案:

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

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

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

此代码应该获取ID为&#34;输入参数&#34;的所有文本框。单词,然后它正常地将处理程序附加到change事件。

这更好,因为无论你最后是否随机添加了字符串,它都会以你的文本框为目标,并且应该按预期工作。

如果这对您有用,或者您仍然需要对此代码进行调整,请告诉我。