Make WordPress Core

Changeset 33473


Ignore:
Timestamp:
07/29/2015 03:26:20 AM (9 years ago)
Author:
markjaquith
Message:

Re-work user-profile.js so the password meter works in IE8 and password managers can fill multiple times.

props adamsilverstein
fixes #32886

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/js/user-profile.js

    r33465 r33473  
    1414
    1515        $submitButtons,
    16         $submitButton;
     16        $submitButton,
     17        currentPass;
    1718
    1819    function generatePassword() {
    1920        if ( typeof zxcvbn !== 'function' ) {
    20            setTimeout( generatePassword, 50 );
     21            setTimeout( generatePassword, 50 );
    2122        } else {
    22            $pass1.val( $pass1.data( 'pw' ) );
    23            $pass1.trigger( 'propertychange' );
    24            $pass1Wrap.addClass( 'show-password' );
     23            $pass1.val( $pass1.data( 'pw' ) );
     24            $pass1.trigger( 'pwupdate' );
     25            $pass1Wrap.addClass( 'show-password' );
    2526        }
    2627    }
     
    2829    function bindPass1() {
    2930        var passStrength = $('#pass-strength-result')[0];
    30         var currentPass = $pass1.val();
     31
     32        currentPass = $pass1.val();
    3133
    3234        $pass1Wrap = $pass1.parent();
     
    4143            .data( 'pw', $pass1.data( 'pw' ) )
    4244            .val( $pass1.val() )
    43             .on( 'input', function () {
    44                 $pass1.val( $pass1Text.val() ).trigger( 'propertychange' );
     45            .on( 'input propertychange', function () {
     46                if ( $pass1Text.val() === currentPass ) {
     47                    return;
     48                }
     49                $pass2.val( $pass1Text.val() );
     50                $pass1.val( $pass1Text.val() ).trigger( 'pwupdate' );
     51                currentPass = $pass1Text.val();
    4552            } );
    4653
     
    5158        }
    5259
    53         $pass1.on( 'input propertychange', function () {
     60        $pass1.on( 'input propertychange pwupdate', function () {
    5461            if ( $pass1.val() === currentPass ) {
    5562                return;
     
    150157         *
    151158         * This fixes the issue by copying any changes from the hidden
    152          * pass2 field to the pass1 field.
     159         * pass2 field to the pass1 field, then running check_pass_strength.
    153160         */
    154161        $pass2 = $('#pass2').on( 'input propertychange', function () {
    155162            if ( $pass2.val().length > 0 ) {
    156163                $pass1.val( $pass2.val() );
    157                 $pass1.trigger( 'propertychange' );
     164                $pass2.val('');
     165                currentPass = '';
     166                $pass1.trigger( 'pwupdate' );
    158167            }
    159168        } );
     
    229238            select = $( '#display_name' );
    230239
    231         $('#pass1').val('').on( 'input propertychange', check_pass_strength );
    232         $('#pass2').val('').on( 'input propertychange', check_pass_strength );
     240        $('#pass1').val('').on( 'input propertychange pwupdate', check_pass_strength );
    233241        $('#pass-strength-result').show();
    234242        $('.color-palette').click( function() {
Note: See TracChangeset for help on using the changeset viewer.