Сделать кнопку НЕ публиковать - PullRequest
1 голос
/ 20 октября 2011

Конечная цель состоит в том, чтобы div «оживлял» вниз, когда кнопка обрезается, а «верх» меньше 0. Я хотел использовать кнопку (для стиля), но когда я делаю это, кажется, что размещать Вот моя кнопка:

<button id="expcoll" class="expcoll" onclick="expcoll();" runat="server">↓</button>

Вот мой JavaScript:

function expcoll() {
    var dFilter = document.getElementById("dFilter");
    var expcoll = document.getElementById("MainContent_expcoll");
    if (dFilter.offsetTop == 0) {
        $("#dFilter").css({ 'top': -200 });
        expcoll.innerHTML = "↓";
    }
    else {
        $("#dFilter").css({ 'top': 0 });
        expcoll.innerHTML = "↑";
    }
}

Может кто-нибудь предложить лучший способ или способ сделать это там, где кнопка не публикуется? Если вам интересно, почему я пытаюсь использовать кнопку, я попытался сделать mouseenter и mouseleave, но из-за того, что некоторые текстовые поля открывают календари jQuery, всякий раз, когда я делаю это, div падает (но календарь остается) , Затем я выполнил функцию «щелчка» на элементе div, но если щелкнуть в текстовых полях, он закроется (но календарь останется). Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Большое спасибо.

Ответы [ 4 ]

4 голосов
/ 20 октября 2011

Событию щелчка на стороне клиента необходимо вернуть значение false, чтобы прервать обратную передачу.Попробуйте добавить следующее:

<button id="expcoll" class="expcoll" onclick="expcoll();return false;" runat="server">↓</button>

Если можете, используйте элемент управления ASP.NET:

<asp:Button ID="Button1" runat="server" OnClientClick="expcoll();return false;" ...>

РЕДАКТИРОВАТЬ

Это может быть лучше, если вы только что вернули false в конце функции (спасибо @Jon Hanna):

function expcoll() { 
    var dFilter = document.getElementById("dFilter"); 
    var expcoll = document.getElementById("MainContent_expcoll"); 
    if (dFilter.offsetTop == 0) { 
        $("#dFilter").css({ 'top': -200 }); 
        expcoll.innerHTML = "↓"; 
    } 
    else { 
        $("#dFilter").css({ 'top': 0 }); 
        expcoll.innerHTML = "↑"; 
    } 
    return false;
} 

<button id="expcoll" class="expcoll" onclick="return expcoll();" runat="server">↓</button>  
0 голосов
/ 20 октября 2011

Если вы хотите иметь возможность звонить expcoll(), вам нужно позвонить с OnClientClick, поскольку это событие клика на стороне клиента. Другими словами, ваша разметка должна выглядеть так:

<asp:button id="expcoll" Text="↓" class="expcoll" onClientclick="expcoll();" OnClick ="EventHandlerForClickOnServerSide" runat="server"></asp:button>

EDIT

Читая внимательнее, похоже, вам не нужен серверный элемент управления. Сделайте это вместо:

<input id="expcoll" class="expcoll" type="button" onclick="expcoll();">↓</input>
0 голосов
/ 20 октября 2011

Я не совсем уверен в этом ответе, но оно того стоит. Я думаю, вы можете просто поставить return false; в конце вашего метода javascript onClick (), и это предотвратит обратную передачу.

Редактировать: также вы можете попробовать событие onClientClick ()

0 голосов
/ 20 октября 2011

Если вы хотите кнопку на стороне клиента, не устанавливайте runat="server".

Кстати, присвоение функции с одинаковым именем не является хорошей идеей - движок javascript может не понять, что вы пытаетесь вызвать функцию, и вместо этого попытаться вызвать элемент ...

...