我正在为我网站上的几个文件下载链接添加密码保护。我通过添加一个提示密码提示的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')。点击功能,但我怎么把它传递给window.location ='downloads /'+ file_name +'。zip';这是$('#password-form')。dialog()函数的一部分。
答案 0 :(得分: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');