使用 javascript 的 Asp.net 按钮可见性
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/7998060/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Asp.net button visibility using javascript
提问by coder
I am using a simple Asp.Net button and trying to hide it on page load event and I want to show it back after doing some client side script.
我正在使用一个简单的 Asp.Net 按钮并试图在页面加载事件中隐藏它,我想在执行一些客户端脚本后将其显示回来。
I have tried out by this way document.getElementById('<%=Button1.ClientID %>').style.visibility = "visible";
and its not showing me up.
我已经通过这种方式尝试过document.getElementById('<%=Button1.ClientID %>').style.visibility = "visible";
,但它没有显示给我。
So how do I enable it back?
那么如何重新启用它呢?
Page_Load:
页面加载:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Button1.Visible = False
End Sub
This is my script:
这是我的脚本:
<script type="text/javascript">
// Convert divs to queue widgets when the DOM is ready
$(function () {
$("#uploader").plupload({
// General settings
runtimes: 'gears,flash,silverlight,browserplus,html5',
url: 'Final.aspx',
max_file_size: '10mb',
max_file_count: 25,
chunk_size: '1mb',
unique_names: true,
// Resize images on clientside if we can
// resize: { width: 320, height: 240, quality: 90 },
// Specify what files to browse for
filters: [
{ title: "Image files", extensions: "jpg,gif,png" },
{ title: "Zip files", extensions: "zip" }
],
// Flash settings
flash_swf_url: 'js/plupload.flash.swf',
// Silverlight settings
silverlight_xap_url: 'js/plupload.silverlight.xap'
});
// Client side form validation
$('form').submit(function (e) {
var uploader = $('#uploader').plupload('getUploader');
// Files in queue upload them first
if (uploader.files.length > 0) {
// When all files are uploaded submit form
uploader.bind('StateChanged', function () {
if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {
$('form')[0].submit();
}
});
uploader.start();
}
else
alert('You must at least upload one file.');
return false;
});
var uploader = $('#uploader').plupload('getUploader');
uploader.bind('FileUploaded', function (up, file, res) {
$('#showfilelist').append("<div id=" + file.id + " class='thumb'><a href='uploads/" + document.getElementById("currentDirectory").value + "/" + file.name + "' target='_blank' rel='gallery'><img src='uploads/" + document.getElementById("currentDirectory").value + "/" + file.name + "' width='50' height='50'/></a></div>");
$('#Maintabs').tabs('enable', 1);
document.getElementById('<%=Button1.ClientID %>').style.visibility = "visible";
});
});
回答by Graham Clark
If you set a control's Visible
property to false
(on the server side), the control will not be rendered to the client, so there'll be nothing there to change the style of.
如果您将控件的Visible
属性设置为false
(在服务器端),则该控件将不会呈现给客户端,因此不会有任何可更改样式的内容。
If you want to hide it on the server but still render it to the client, set the visibility
CSS property (via the Style
property), or assign the element a CSS class that will hide it (via the CssClass
property).
如果您想在服务器上隐藏它但仍将其呈现给客户端,请设置visibility
CSS 属性(通过Style
属性),或为元素分配一个 CSS 类来隐藏它(通过CssClass
属性)。
回答by coder
Thanks for all your suggestions and I have set its visibility as below
感谢您的所有建议,我已将其可见性设置如下
<script type="text/javascript">
$(function () {
document.getElementById('<%=Button1.ClientID %>').style.visibility = "hidden";
});
<script>
回答by Eric
Why can't you use the display attribute instead?
为什么不能改用 display 属性?
document.getElementById('<%=Button1.ClientID %>').style.display= '';
document.getElementById('<%=Button1.ClientID %>').style.display= 'none';
This way, you're not touching the server attributes, but the client ones. You may have to tweak the above code a bit.
这样,您就不会触及服务器属性,而是触及客户端属性。您可能需要稍微调整一下上面的代码。
回答by CBRRacer
If the element is always going to be hidden on page load then I would just set a default class or style that sets display: none;
and then toggle that with javascript
如果元素总是在页面加载时隐藏,那么我只需设置一个默认的类或样式,display: none;
然后用 javascript 切换它
so in the HTML for you button
所以在 HTML for you 按钮中
<asp:button runate="server" id="Button1" CssClass="displayNone"></asp:button>
<script>
$("#Button1").removeClass(displayNone");
</script>
<style>
.displayNone { display: none; }
</style>