Проверка значения поля с использованием элемента, который заканчивается - PullRequest
1 голос
/ 30 декабря 2011

У меня есть форма редактирования SharePoint, где я хочу сделать одно из полей Y / N доступным только для чтения.Это поле переключает видимость двух других полей.Я преобразовал только для чтения в связанное поле метки.Если это поле, оканчивающееся на «_ff5_1», имеет значение «Да», то я хочу, чтобы два переключаемых поля были скрыты, если нет, то покажите их.

Вот код с моей первой попытки

if ($("span[id$=_ff5_1]").val() == "Yes") {    
    $("tr.anon").hide(); 
} else {
    $("tr.anon").show();
}

Я подумал, что, возможно, пытаюсь сделать слишком много за один раз с помощью приведенного выше кода, поэтому я изменил его на следующий

$("span[id$='_ff5_1']") //select element
   if $(this).val() ==='Yes' { //test val
      $("tr.anon").hide(); // hide name & email rows
} else {
      $("tr.anon").show();
}

Однако ни один из них не скрывает строки, если основанна значение поля Y / N.

UPDATE1 @Nicola: Я попробовал ваше предложение, но оно не сработало.Я считаю, что проблема в том, что поле ($ ("span [id $ = '_ff5_1']")) больше не является полем ввода - я преобразовал его в поле метки, чтобы сделать его доступным только для чтения.

$("span[id$='_ff5_1']").each(function() { //returns a collection of elements that must be iterated through using each
        if (this.value == "Yes") { //test value 
            $("tr.anon").hide(); 
        } else {
            $("tr.anon").show();
        }   
     });

Кроме того, я считаю, что поля, которые я пытаюсь скрыть, не являются родителями поля метки, но являются потомками поля метки.

Спасибо за ваш отзыв.

ОБНОВЛЕНИЕ2: Вот код src связанной метки и два текстовых поля, которые я хочу переключать видимость на основе.

<tr>
    <td width="190px" valign="top" class="ms-formlabel"><H3 class="ms-standardheader">Anonymous</H3></td>
    <td width="400px" valign="top" class="ms-formbody">
       <span id="ctl00_m_g_e959bdad_1c52_41a7_b23f_564bc84c2497_ff5_1">Yes</span>
       <br>Would you like to remain anonymous?</td>
</tr>
<tr class="anon">
    <td width="190px" valign="top" class="ms-formlabel"><H3 class="ms-standardheader">Name</H3></td>
    <td width="400px" valign="top" class="ms-formbody">
       <span dir="none"><input name="ctl00$m$g_e959bdad_1c52_41a7_b23f_564bc84c2497$ff6_1$ctl00$ctl00$TextField" type="text" maxlength="255" id="ctl00_m_g_e959bdad_1c52_41a7_b23f_564bc84c2497_ff6_1_ctl00_ctl00_TextField" title="name" class="ms-long" /><br></span></td>
</tr>
<tr class="anon">
    <td width="190px" valign="top" class="ms-formlabel"><H3 class="ms-standardheader">Email</H3></td>
    <td width="400px" valign="top" class="ms-formbody">
       <span dir="none"><input name="ctl00$m$g_e959bdad_1c52_41a7_b23f_564bc84c2497$ff7_1$ctl00$ctl00$TextField" type="text" maxlength="255" id="ctl00_m_g_e959bdad_1c52_41a7_b23f_564bc84c2497_ff7_1_ctl00_ctl00_TextField" title="email" class="ms-long" /><br></span></td>
</tr>

UPDATE3: Val () следует использовать только для получения значения входных элементов.B / c Я преобразовал свой элемент ввода в метку, я должен использовать .text ().http://api.jquery.com/text/

ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ:

$("span[id$='_ff5_1']").each(function() { //returns a collection of elements that must be iterated through using each
  if ($(this).text() == "Yes") { //test value returned from non-input field 
      $("tr.anon").hide(); 
  } else {
      $("tr.anon").show();
  } 
});

1 Ответ

2 голосов
/ 30 декабря 2011

Может быть, вы должны сделать что-то вроде

$("span[id$=_ff5_1]").each(function(){
  if (this.value == "Yes") {    
    $(this).closest("tr").find('.anon').hide(); 
  } else {
    $(this).closest("tr").find('.anon').show();
  }
});

Вы должны сделать что-то подобное, потому что $("span[id$=_ff5_1]") возвращает коллекцию элементов, и вы должны выполнить итерации по ним. Тогда я просто получил ближайший элемент <tr>, который является родителем текущего элемента ввода, и скрыл / показал элементы с классом anon, но, может быть, вам нужно что-то другое

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...