Używam prostego przycisku ASP.NET i próbując ukryć go na zdarzeniu obciążenia strony i chcę pokazać go z powrotem po wykonaniu skryptu po stronie klienta.

Wypróbowałem przez ten sposób document.getElementById('<%=Button1.ClientID %>').style.visibility = "visible"; i nie pokazuje mnie.

Więc jak mogę to włączyć?

Page_load:

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
 Button1.Visible = False
End Sub

To jest mój skrypt:

<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"; 
    });


});
1
coder 3 listopad 2011, 20:05

4 odpowiedzi

Najlepsza odpowiedź

Jeśli ustawisz właściwość Visible Visible (po stronie serwera), kontrola nie będzie renderowana do klienta, więc nie będzie nic, aby zmienić styl.

Jeśli chcesz ukryć go na serwerze, ale nadal uczynił go klientowi, ustaw właściwość visibility CSS (za pomocą właściwości Style) lub przypisuje element klasy CSS, która ją ukryje (przez przez właściwość CssClass).

11
Graham Clark 3 listopad 2011, 16:09

Dziękujemy za wszystkie twoje sugestie i ustawiłem jego widoczność jak poniżej

<script type="text/javascript">
$(function () {
document.getElementById('<%=Button1.ClientID %>').style.visibility = "hidden";
}); 
<script>
7
coder 3 listopad 2011, 16:13

Dlaczego zamiast tego nie możesz użyć atrybutu wyświetlacza?

document.getElementById('<%=Button1.ClientID %>').style.display= '';
document.getElementById('<%=Button1.ClientID %>').style.display= 'none';

W ten sposób nie dotykasz atrybutów serwera, ale klienta. Możesz trochę zmienić powyższy kod.

2
Eric 3 listopad 2011, 16:12

Jeśli element zawsze będzie ukryty na obciążeniu strony, właśnie ustawiłbym domyślną klasę lub styl, który ustawia display: none;, a następnie przełączaj to z JavaScript

Więc w przycisku HTML

<asp:button runate="server" id="Button1" CssClass="displayNone"></asp:button>

<script>
  $("#Button1").removeClass(displayNone");
</script>

<style>
  .displayNone { display: none; }
</style>
1
CBRRacer 3 listopad 2011, 16:11