JQuery не очищает данные формы в представлении ASP.NET MVC со встроенными частичными представлениями

В нашем приложении ASP.NET MVC 4 у нас есть представление Index.cshtml с одним тегом формы и несколькими частичными представлениями, встроенными в этот тег. Index.cshtml имеет горизонтальные вкладки вверху, и каждое частичное представление связано с одной из этих вкладок:

@{
    ViewBag.Title = "Main Page";
}
@section Scripts{
<script type="text/javascript">
   $(document).ready(function () {
     $('#btnClearAll').click(function () {
        $(':input').not(':button, :submit, :reset, :hidden').val('');
     });
});
</script>
}
<form action="#">
<div id="tabs">
  <ul>
     <li><a href="#Tab1" id="Tab1_menu_link">Tab 1/a></li>
     <li><a href="#Tab2" id="Tab2_menu_link">A</a></li>
     <li>.......</li> //other tabs ...
  </ul>
  <div id="Tab1">
     @{Html.RenderPartial("View1");}
  </div>
  <div id="Tab2">
     @{Html.RenderPartial("View2");}
  </div>
  ......//other embedded views etc.
</form>

View1 имеет кнопку «Очистить все». Мы написали событие щелчка (как показано выше) внутри тега файла Index.chtml, чтобы, когда пользователь нажимает на указанную выше кнопку, очищаются данные всех элементов управления вводом из всех частичных представлений внутри этой единственной формы. Но кнопка очищает данные только от элементов управления внутри частичного представления1.

Элементы управления вводом всех частичных представлений имеют текстовый тип (текстовые поля), некоторые из их значений доступны только для чтения и поступают из текстовых полей из других частичных представлений. Например, textbox1 для view1 имеет значение readOnly, а его значение установлено на textbox2 для view2. Значения всех текстовых полей, не предназначенных только для чтения, вводятся пользователем.

Как мы можем заставить приведенный выше код очищать данные из элементов управления вводом во всех частичных представлениях?

Спасибо .. Нам


person nam    schedule 20.12.2013    source источник
comment
Как выглядят View1 и View2?   -  person Jasen    schedule 21.12.2013
comment
нет причин, по которым он не должен работать как есть   -  person charlietfl    schedule 21.12.2013
comment
Jasen, я изменил свой исходный пост с дополнительными разъяснениями. См. Второй последний абзац.   -  person nam    schedule 21.12.2013
comment
Было бы намного полезнее для других, если бы мы могли видеть ваши взгляды; обрезать код, если есть много похожих входов. Как уже упоминалось выше, javascript должен работать, поэтому может быть проблема с html. Кроме того, это может быть ошибка транскрипции, но вам не хватает закрывающего тега скрипта.   -  person Jasen    schedule 22.12.2013
comment
Jasen, я только что добавил закрывающий тег скрипта выше. Это в исходном коде. Частичные представления - это простые файлы HTML с тегами ввода типа text.   -  person nam    schedule 22.12.2013


Ответы (1)


  1. Вы должны написать этот фрагмент кода JavaScript внизу index.cshtml, а не посередине между PartialView1 и PartialView2.

  2. Убедитесь, что вы включили файл JQuery js

  3. Загрузите все частичные представления перед рендерингом скрипта.

person albusshin    schedule 21.12.2013
comment
Альбус, я изменил свой исходный пост. См. Код в файле Index.cshtml и дальнейшие пояснения во втором последнем абзаце. - person nam; 21.12.2013
comment
Альбус, все связанные файлы JQuery добавлены (код работает для частичного представления1, где находится кнопка btnClearAll). Кроме того. все частичные представления загружаются до запуска кода, поскольку код включен в событие $ (document) .ready (), как показано в моем сообщении выше. - person nam; 22.12.2013