добавить класс к родителю, если ребенок существует - PullRequest
1 голос
/ 22 сентября 2011

Привет, я использую codeigniter для генерации формы, ошибка формы отображается только в том случае, если в этом поле есть ошибка. Я использую twitter-bootstrap для стилизации, поэтому мне нужен способ добавить класс ошибки в оба элемента div (с классом. = "clear fix") и входные данные if (span class = "help-inline") существуют как дочерние.

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

любая помощь будет отличной. надеюсь, что это имеет смысл. код ниже спасибо

    <?php echo form_open('login'); ?>
    <fieldset>
    <div class="clearfix">
         <?php echo form_label('Email Address: ', 'email_address');?>
         <div class="input"><?php echo form_input('email_address', set_value('email_address'), 'id="email_address" class="xlarge" autofocus ');?>
         <?php echo form_error('email_address', '<span class="help-inline">', '</span>'); ?>
         </div>
    </div><!-- /clearfix -->
    <div class="clearfix">
         <?php echo form_label('Password: ', 'password');?>
         <div class="input"><?php echo form_input('password', '', 'id="password" class="xlarge"');?>
         <?php echo form_error('password', '<span class="help-inline">', '</span>'); ?>
         </div>
    </div><!-- /clearfix -->
    <div class="actions">
       <?php echo form_submit('submit', 'Login', 'class="btn primary"'); ?>
    </div>
    </fieldset>
    <?php echo form_close(); ?>

визуализированный html (если сработала ошибка)

<form action="http://unetics.site/index.php/login" method="post" accept-charset="utf-8">
    <div style="display:none">
        <input type="hidden" name="csrf_test_name" value="c0856f469b1f498480881a8512042ccf" />
    </div>
    <fieldset>
        <div class="clearfix">
            <label for="email_address">Email Address: </label>
            <div class="input">
                <input type="text" name="email_address" value="" id="email_address" class="xlarge" autofocus  />             
                <span class="help-inline">The Email Address field is required.</span>                   </div>
        </div><!-- /clearfix -->
        <div class="clearfix">
            <label for="password">Password: </label>
            <div class="input"><input type="text" name="password" value="" id="password" class="xlarge" />
                <span class="help-inline">The Password field is required.</span>
            </div>
        </div><!-- /clearfix -->
        <div class="actions">
            <input type="submit" name="submit" value="Login" class="btn primary" />
        </div>
    </fieldset>
</form> 

1 Ответ

3 голосов
/ 22 сентября 2011

Я бы предложил использовать:

$('.help-inline').closest('.clear-fix').addClass('error').end().prev('input').addClass('error');

JS Fiddle demo .

Демонстрация JS Fiddle с вашим отрендеренным html (обратите внимание, что я изменил jQuery closest() на: closest('.clearfix')).

Или:

$('.clear-fix').each(
    function(){
        if ($(this).has('.help-inline')){
            $(this).addClass('error');
            $(this).find('input').addClass('error');
        }
     });

Демонстрация JS Fiddle .

Демонстрация JS Fiddle с вашим отрисованным html (обратите внимание, что я изменил селектор jQuery на: $('.clearfix')).

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