jQuery попробуйте установить значения TextBoxFor на основе снятия флажка CheckBoxFor в MVC3 - PullRequest
0 голосов
/ 18 января 2012

У меня есть представление, заполняющее флажки для и текстовое поле для базы данных. Их может быть несколько, в зависимости от количества записей в модели. Это все работает нормально. Но теперь я хочу иметь скрипт, который уберет соответствующее текстовое поле, если они снимают флажок. Сценарий выполняется, но, похоже, он не находит текстовое поле - я пробовал это 7 способов до воскресенья, и когда он попадает в строку, чтобы установить значение в пустую строку, он просто перемещается и ничего не происходит. Когда я просматриваю исходный код, в моей переменной есть идентификатор текстового поля, которым я пытаюсь манипулировать. Я тяну свои волосы с этим в течение 2 дней. Любая помощь приветствуется.

Вот скрипт:

<script type="text/javascript">
    $(document).ready(function () {
        $('.chkbox').live('click', function () {
            if ( ! $(this).attr('checked')) 
                {
                var myid = "txtbox_" + $(this).attr('id');
                var varempty = '';
                $("#" + myid).val = (varempty);
            }

        });
    });

Здесь я создаю флажок для / текстовое поле:

@For x = 0 To Model.Count - 1
      Dim i As Integer = x
      @&lt;tr&gt;
      &lt;td class="checkboxcolumn"&gt;
      @Html.HiddenFor(Function(model) model(i).Soft_ID)
      @Html.HiddenFor(Function(model) model(i).ESR_Soft_ID)
      @Html.CheckBoxFor(Function(model) model(i).Soft_Checked, New With {.id = Model(i).Soft_ID.ToString, .class = "chkbox"})
      &lt;/td&gt;
      &lt;td class="checkcolumn"&gt;
      @Html.Label(Model(i).Soft_Title)
      &lt;/td&gt;
      &lt;td class="checkcolumn"&gt;
      @Html.TextBoxFor(Function(model) model(i).License_Key, New With {.size = "50", .id = "txtbox_" + Model(i).Soft_ID.ToString})
      &lt;/td&gt;
      &lt;/tr&gt;
   Next

И вот что отображается в исходном коде страницы, показывая идентификатор текстового поля для «txtbox_x», что соответствует тому, что я собираю в своем сценарии:

<tr>
      <td class="checkboxcolumn">
      <input data-val="true" data-val-number="The field Soft_ID must be a number." data-val-required="The Soft_ID field is required." name="[0].Soft_ID" type="hidden" value="1" />
      <input data-val="true" data-val-number="The field ESR_Soft_ID must be a number." data-val-required="The ESR_Soft_ID field is required." name="[0].ESR_Soft_ID" type="hidden" value="17" />
      <input checked="checked" class="chkbox" data-val="true" data-val-required="The Soft_Checked field is required." id="1" name="[0].Soft_Checked" type="checkbox" value="true" /><input name="[0].Soft_Checked" type="hidden" value="false" />

      </td>
      <td class="checkcolumn">
      <label for="Adobe_Writer">Adobe Writer</label>
      </td>
      <td class="checkcolumn">
      <input id="txtbox_1" name="[0].License_Key" size="50" type="text" value="adobe key" />
      </td>
      </tr>

Любая помощь будет принята с благодарностью! Я уже два дня бьюсь головой об стену. Я попытался установить: eq (index), setting [input id = variable] и множество других вещей без успеха. Он запускает сценарий, когда установлен флажок, и правильно извлекает идентификатор флажка и правильно формирует имя связанного текстового поля - он просто не находит поле и не устанавливает значение пустого текста в val. Отладка с помощью Firebug показывает, что он достигает последней строки, а затем просто выходит из сценария.

Я также должен заметить, что я новичок в MVC и jQuery, поэтому заранее прошу прощения, если я что-то не так делаю.

1 Ответ

0 голосов
/ 18 января 2012

Это неправильный синтаксис - $ ("#" + myid) .val = (varempty);Это должно быть - $ ("#" + myid) .val (varempty);

...