Используя jQuery, когда меняется выпадающий список, мне нужно другое поле ввода, чтобы стать обязательным с помощью Coldfusion - PullRequest
1 голос
/ 20 апреля 2011

У меня есть форма, которая выводит системы, назначенные проекту.Системы зациклены, и новые строки могут быть добавлены динамически, поэтому использование атрибута ID недоступно.

Когда пользователь вносит изменения в опцию выпадающего статуса, мне нужно связанное поле Date Effect Effect Date, чтобы стать обязательным.Я не знаю, как пройти DOM достаточно хорошо, чтобы найти поле с классом DatePicker.

<tr>  
    <th class="form">
        <label>Status</label>
    </th>  
    <td>
        <div style="float:left;">  
        <select class='status' name="status" >  
            <option value="New">New</option>  
            <option value="Existing">Existing</option>  
            and so on...  
        </select>  
        </div>
    </td>  
    <th class="form">
        <label>Status Eff. Date</label>
    </th>  
    <td>
        <div style="float:left;">  
            <input type="text" name="statuseffective" class="datepicker" size="15" >  
        </div>
    </td>  
</tr> 

Если прописано, процесс будет работать так:
когда пользователь делаетпри изменении состояния JS найдет следующее поле ввода, содержащее класс .datepicker и addClass ('required'), а также установит фокус на это поле (настройка focus не обязательна, поскольку addClass’quired 'уже сделает поле красным).

Я могу определить, какой выпадающий список изменился, я просто не могу перейти к следующему элементу ввода.Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 20 апреля 2011
$('.status').change(function(){
    $(this).next('input.datepicker').addClass("required").focus();
});

Должен сделать свое дело.

Обновление

Хорошо, так ... потому что оба не имеют одного и того же родителя, вы должны подняться на уровень. next только находит прямой элемент next, nextAll находит все элементы (на том же уровне dom это выглядит). Тестирование кучу разных способов сделать это и придумал это:

$('.status').change(function(){
    $(this).parents('td').nextAll("td:first").find('.datepicker').focus()
});

Это должно помочь тебе!

1 голос
/ 20 апреля 2011

Здесь мы идем ... редактирование моего ответа, так как теперь я вижу, что .datepicker не находится под тем же родителем, что и .status.

$ (". Status"). Live ("click", function () { . $ (Это) .parent () найти ( 'input.datepicker') addClass ( "обязательно") фокус ()..; )};

...