2016-08-08 7 views
0

私はJSには新しく、アイコンを使用してパスワードジェネレータを作成しようとしています。これは、リスト内の任意の数のアイコンをクリックするように設計されており、16進コードは入力ボックスに入れられます。二つの重要なビット:選択したアイコンリストの値を入力ボックスに取り込みます

  • 16進コードに関係なく、あなたが内のアイコンを選択したどのような順序入力ボックスに同じように表示されない
  • あなたは、アイコンを切り替えるとuntoggleことができます。ここで

私のコードは、これまでのところです:

https://jsfiddle.net/uvzb8a6s/1/

HTML

<input id="pass"> 
<ul id="icons"> 
<li class="icon">&#9824;</li> 
<li class="icon">&#9742;</li> 
<li class="icon">&#9743;</li> 
<li class="icon">&#9744;</li> 
</ul> 

JS

$('#icons li').click(function() { 
    $(this).toggleClass("active"); 
    $('#pass').text('#icons li'); 
}); 

どのように私はすべてのアクティブ・李さんに列挙された値を得るのですか入力ボックス、このようなもの(もし私がcアイコン3をなめた後、1をアイコン:.text()方法で自分のテキストを取得しますli.active

  • とアクティブなクラスを持っている

    &#9824;&#9743; 
    
  • +1

    アイコンの順序を保存せずに、パスワードを保存する安全な方法ではありません。 – Vixed

    +0

    @Vixedどうして?私は強力なパスワードを生成すると思う – Jimmy

    +1

    番号だけのキーボードを想像しましょう、私は** 2214473 **のようなパスワードを設定することができます**あなたのアイコンが10(0〜9)であると想像し、同じパスワードを書き込もうとします。同じ番号を2回以上クリックすることはできますか?あなたが** pass.text( '#icons li'); **を使うなら、あなたは望む順序でそれを保存しますか?あなたを助けることができることを願っています。 – Vixed

    答えて

    4
    • 選択li要素を。
    • .val(value)メソッドで入力値を設定します。
    • さらに

    • 入力内部html entity string代わりの文字を取得するには、String.charCodeAt()方法を利用することによって、そのentity stringで各文字を置き換えることができます。この例のStringifyボタンを参照してください。

    $('#icons li').click(function() { 
     
        $(this).toggleClass("active"); 
     
        $("#pass").val($("#icons li.active").text()); 
     
    }); 
     
    
     
    $("button").on("click", function() { 
     
        $("#pass").val($("#pass").val().replace(/(.)/g, function(char) { 
     
        return "&#" + char.charCodeAt() + ";"; 
     
        })); 
     
    });
    ul li { 
     
        list-style: none; 
     
        display: inline; 
     
    } 
     
    .active { 
     
        background-color: red; 
     
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     
    <input id="pass"> 
     
    <button>Stringify</button> 
     
    <ul id="icons"> 
     
        <li class="icon">&#9824;</li> 
     
        <li class="icon">&#9742;</li> 
     
        <li class="icon">&#9743;</li> 
     
        <li class="icon">&#9744;</li> 
     
    </ul>

    Updated jsFiddle

    +0

    私はこれができる時に答えるようにします。私はあなたがテキストボックスのアイコンではなくコードを表示する方法を知っているとは思いません。♠ '' ' – Jimmy

    +0

    @Jimmy、私は文字とそのHTMLエンティティ名を含む検索を使用して文字列を同等の文字列で手動で置き換えることしか考えられません。更新されたスニペットを参照してください。 – Ozan

    +0

    私は、ルックアップオブジェクトの代わりに '.charCodeAt()'を使うことがより持続可能であることを認識しました。この方法では、可能な文字のオブジェクトを手動で管理する必要はありません。だから私は '.charCodeAt()'を使うようにサンプルを更新し、検索オブジェクトを取り除いた。 – Ozan

    2

    このコードを見てください:

    https://jsfiddle.net/uvzb8a6s/9/

    $('#icons li').click(function() { 
        $(this).toggleClass("active"); 
        var oldPass = $('#pass').val(); 
        if ($(this).hasClass("active")) { 
        oldPass = oldPass + $(this).html(); 
        } else { 
        var textToRemove = $(this).html(); 
        oldPass = oldPass.replace(textToRemove, ''); 
        } 
        alert(oldPass); 
        $('#pass').val(oldPass); 
    }); 
    

    このコードアイコンをクリックして選択したり、選択を解除したりする順序も考慮してください。

    関連する問題