2011-09-22 8 views
1

안녕하세요 저는 formigner를 사용하여 양식을 생성합니다. 양식 오류는 해당 필드에 오류가있는 경우에만 표시됩니다. 따라서 스타일 클래스에 twitter-bootstrap을 사용하여 오류 클래스를 추가해야합니다. div (class = "clear fix")와 input (span class = "help-inline")이 자식으로 존재할 때. 제대로 저하 있도록자식이 존재하는 경우 부모 클래스에 클래스 추가

쿼리를 사용하지 않는 것을 선호하지만, 어떤 옵션은

어떤 도움이 좋을 것 좋은 것입니다. 의미가있는 희망.

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

JS Fiddle demo : 코드 덕분에 아래

<?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> 
+0

또한이 변경 사항은 없지만 CSS를 생성하는 데 덜 사용하고 있습니다. –

+4

렌더링 된 HTML 표시; PHP (서버 측)는 JavaScript (클라이언트 측)와 완전히 무관합니다. –

답변

3

입니다.

JS Fiddle demo, with your rendered html (jQuery를 closest()으로 변경했습니다. 참고 : closest('.clearfix')).

또는 :

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

JS Fiddle demo.

JS Fiddle demo, with your rendered html (jQuery 선택기를 $('.clearfix')으로 변경했음을 유의하십시오.)

+0

대단히 고맙습니다. JS Fiddle에서 완벽한 감각과 작동하지만 어떤 이유로 내 사이트에서 작동하지 않습니다. –

+0

수정 사항을 확인하십시오. 나는 원래 데모에서'.clearfix' 대신'clear-fix '를 사용했다. 그 이후 새롭게 개정 된 데모에서 변경되었습니다 (새 링크 외에도 언급 됨). –

+0

그것이 작동하고 있다고 생각했지만 지금은 아이를 불문하고 모든 것을 강조 표시합니다. (귀하의 js 바이올린에서 동일하게 작동합니다. –

관련 문제