-1

私のサイトのいくつかのファイルダウンロードリンクにパスワード保護を追加しています。これを行うには、パスワードプロンプトを表示するonclickイベントを追加し、成功したらwindow.loaction=/path/to/file_name.zipを使用します。間違ったファイルをダウンロードしていることを除いて、私のコードはほとんど機能しています。id = "2012"のリンクをクリックすると、常に2011.zipがダウンロードされます。

リンクコード:

<a class="download" id="2011" href="#" onclick="promptPassword()">Download the</br> 2011 CD</a>

<a class="download" id="2011" href="#" onclick="promptPassword()">Download the</br> 2011 CD</a>

Javascriptコード:

<script>
    $(function promptPassword(){

        var tips = $(".validateTips");



        function updateTips(t) {
            tips
                    .text(t)
                    .addClass("ui-state-highlight");
        }

        $('#password-form').dialog({
            autoOpen: false,
            height: 300,
            width: 350,
            modal: true,
            buttons: {
                "Enter": function(file_name) {
                    var file_name = $('.download').attr('id');
                    var  password = $('#password').val();

                    var data_html = "password=" + password;
                    $.ajax({
                        type: 'POST',
                        url: 'password.php',
                        data: "password=" + password,
                        success: function(password) {
                            if(password == 'true'){
                                window.location = 'downloads/' + file_name + '.zip';
                                $('#password-form').dialog( 'close' );

                            }
                            else {
                                updateTips("Incorrect Password. Please try again.")
                                $('#password').addClass("ui-state-error")
                                return false
                            }
                        }

                    });
                }
            }
        });

        $( ".download")
                .click(function() {
                    $("#password-form").dialog( "open" );
        });

    });
</script>

私の質問は:

promptPassword関数のどこで、promptPasswordイベントをアクティブ化したダウンロードリンクのIDを取得する必要がありますか?私の最善の推測は$('。download')。click関数の間ですが、それをwindow.location ='downloads /'+ file_name+'.zip'に渡すにはどうすればよいでしょうか。これは$('#password-form')。dialog()関数の一部です。

4

1 に答える 1

0

問題はここにあります:

var file_name = $('.download').attr('id');

要素のコレクションから値を取得しようとすると、コレクションの最初の要素の値のみが返されます。

activeクリックした要素にクラスを追加できます。

$( ".download").click(function() {
         $("#password-form").dialog( "open" );
       $( ".download.active").removeClass('active');
      $(this).addClass('active');
 });

ダイアログ内Enterボタン:

var file_name = $('.download.active').attr('id');
于 2013-01-27T21:02:38.273 に答える