【问题标题】:I am wanting to have text highligt in my help section when a user focuses on a text input当用户专注于文本输入时,我希望在我的帮助部分中突出显示文本
【发布时间】:2014-05-10 02:22:31
【问题描述】:

我有 2 个 div,第一个有一个带有输入字段的表单,第二个只是密码强度等的帮助部分。这是我的表格:

<form action="<?php echo esc_url($_SERVER['PHP_SELF']); ?>"  method="post" class="form-signin" id="reg_form" role="form" name="registration_form">
    Registration Key:<input class="form-control" type='text' name='reg_key' id='reg_key' required /><span id="loadergif"></span><br>
    Username:<input class="form-control" type='text' name='username' id='username' /><br>
    Email: <input class="form-control" type="email" name="email" id="email" /><br>
    Password:<input data-toggle="tooltip" data-placement="right" data-trigger="click" class="form-control input-group" type="password" name="password" id="password"/><br>
    Confirm password: <input class="form-control" type="password" name="confirmpwd" id="confirmpwd" /><br>
    <input type="button" value="Register" class="btn btn-success" onclick="return regformhash(this.form,this.form.username,this.form.email,this.form.password,this.form.confirmpwd);" /> <br>
    <p>Already registered? <a href="signin.php">Sign In</a></p>
</form>

和帮助部分:

<ul class="list-group">
    <li class="list-group-item" id="reg">Registration key can be found in the email that we sent you.</li>
    <li class="list-group-item" id="user">Usernames may contain only digits, upper and lower case letters and underscores</li>
        <li class="list-group-item" id="emailli">Emails must have a valid email format (e.g. test@test.com)</li>
    <li class="list-group-item" id="passfield">Passwords must be at least 6 characters long</li>
    <li class="list-group-item" id="passfield1">Passwords must contain:
        <ul>
            <li class="list-group-item" id="passfield2">At least one upper case letter (A..Z)</li>
            <li class="list-group-item" id="passfield3">At least one lower case letter (a..z)</li>
            <li class="list-group-item" id="passfield4">At least one number (0..9)</li>
        </ul>
    </li>
    <li class="list-group-item" id="confirmpass">Your password and confirmation must match exactly</li>
</ul>

我尝试过使用$('#reg_key').focus($('#reg').addClass('highlight'));,但无论如何它只是突出显示每个字段。我希望它发生在焦点上,然后在用户关注下一个字段时转到下一个字段并从前一个字段中删除突出显示..

更新:

这是我申请的:

$('#reg_key').focus(function(){
$('#reg').addClass('highlight');
});

$('#username').focus(function(){
$('#user').addClass('highlight');
$('#reg').removeClass('highlight');
});

$('#email').focus(function(){
$('#emailli').addClass('highlight');
$('#user').removeClass('highlight');
});

$('#password').focus(function(){
$('#passfield').addClass('highlight');
$('#passfield1').addClass('highlight');
$('#passfield2').addClass('highlight');
$('#passfield3').addClass('highlight');
$('#passfield4').addClass('highlight');
$('#emailli').removeClass('highlight');
});

$('#confirmpwd').focus(function(){
$('#confirmpass').addClass('highlight');
$('#passfield').removeClass('highlight');
$('#passfield1').removeClass('highlight');
$('#passfield2').removeClass('highlight');
$('#passfield3').removeClass('highlight');
$('#passfield4').removeClass('highlight');
});

但是#password 和#confimpwd 不起作用...

【问题讨论】:

    标签: javascript jquery html highlight


    【解决方案1】:

    稍微修改了您的 HTML。看看这是否适合你: http://jsfiddle.net/lotusgodkk/GCu2D/91/

    JS:

     $(document).on('focus','form input',function(){
        $('.highlight').removeClass('highlight');
        var id = $(this).attr('id');
        $('.list-group li.'+id).addClass('highlight');        
    });
    

    HTML:

    <form action="<?php echo esc_url($_SERVER['PHP_SELF']); ?>" method="post" class="form-signin" id="reg_form" role="form" name="registration_form">Registration Key:
      <input class="form-control" type='text' name='reg_key' id='reg_key' required="true" /><span id="loadergif"></span>
      <br>Username:
      <input class="form-control" type='text' name='username' id='username' />
      <br>Email:
      <input class="form-control" type="email" name="email" id="email" />
      <br>Password:
      <input data-toggle="tooltip" data-placement="right" data-trigger="click" class="form-control input-group" type="password" name="password" id="password" />
      <br>Confirm password:
      <input class="form-control" type="password" name="confirmpwd" id="confirmpwd" />
      <br>
      <input type="button" value="Register" class="btn btn-success" onclick="return regformhash(this.form,this.form.username,this.form.email,this.form.password,this.form.confirmpwd);" />
      <br>
      <p>Already registered? <a href="signin.php">Sign In</a>
      </p>
    </form>
    <ul class="list-group">
      <li class="list-group-item reg_key">Registration key can be found in the email that we sent you.</li>
      <li class="list-group-item username">Usernames may contain only digits, upper and lower case letters and underscores</li>
      <li class="list-group-item email">Emails must have a valid email format (e.g. test@test.com)</li>
      <li class="list-group-item password">Passwords must be at least 6 characters long</li>
      <li class="list-group-item confirmpwd">Passwords must contain:
    <ul>
            <li class="list-group-item passfield2">At least one upper case letter (A..Z)</li>
            <li class="list-group-item passfield3">At least one lower case letter (a..z)</li>
            <li class="list-group-item passfield4">At least one number (0..9)</li>
        </ul>
    </li>
    <li class="list-group-item confirmpass">Your password and confirmation must match exactly</li>
    </ul>
    

    使用类来关联输入和消息字段,而不是使用 Id。

    【讨论】:

    • 很高兴它对你有用。只是问,为什么链接中的表单输入没有统一的边缘?我这里说的是边界半径?
    • 为什么 ul 更高?我不知道。我仍在开发网站等。不过这很奇怪……
    • ul 更高,因为您在左侧 div 中设置了填充。如果您需要统一级别,则为右 div 提供相同的填充。
    • 您可以使用表单输入{border-radius:4px;} 代替单独的边框半径,或者更好地为您想要圆角的所有输入提供一个通用类。
    【解决方案2】:

    您编写此代码的方式将导致您的.addClass 语句立即执行。您需要将该语句包装在一个匿名函数中以延迟它直到元素被聚焦:

    $('#reg_key').focus(function(){
       $('#reg').addClass('highlight')
    });
    

    【讨论】:

    • 您可能还想通过类似调用“blur”和“removeClass”来取消突出显示它。
    【解决方案3】:

    您可以这样做,将突出显示类添加到当前帮助字段并为前一个帮助字段删除它:

    $('#currentinputelementID').focus(function(){
       $('#currenthelpfieldID').addClass('highlight');
       $('#previoushelpfieldID').removeClass('highlight');
    });
    

    【讨论】:

      【解决方案4】:

      我使用:focus 伪选择器创建了一个替代解决方案,这是演示:http://jsfiddle.net/sandro_paganotti/Qxxtb/

      HTML

      <form>
          <input type="text" id="name" placeholder="name"/><br/>
          <input type="password" id="password"/>
          <div>
              <p data-for="name">this is the help for name</p>
              <p data-for="password">this is the help for password</p>
          </div>    
      </form>
      

      CSS

      #name:focus ~ div > p[data-for="name"],
      #password:focus ~ div > p[data-for="password"]{
          background-color: yellow;
      }
      

      【讨论】:

        猜你喜欢
        • 2021-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-31
        • 2014-12-06
        • 2019-08-01
        • 1970-01-01
        相关资源
        最近更新 更多