使用 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 Visibleproperty 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 visibilityCSS property (via the Styleproperty), or assign the element a CSS class that will hide it (via the CssClassproperty).
如果您想在服务器上隐藏它但仍将其呈现给客户端,请设置visibilityCSS 属性(通过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>

