LinkButton не ссылается на click()
Почему это не работает?
<script src="Scripts/jquery-1.3.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.myButton').click();
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:LinkButton id="ttt" runat="server" PostBackUrl="~/Default.aspx" CssClass="myButton">Click</asp:LinkButton>
</div>
</form>
Ответы
Ответ 1
Вы хотите отправить форму или добавить событие Click?
Кнопка ссылки переведена на
<a id="ttt" class="myButton" href="javascript:WebForm_DoPos[...]">Click</a>
поэтому он не имеет кликов по javascript. Поэтому .click();
ничего не делает.
Я не тестировал его, но, возможно, это сработает:
eval($('.myButton').attr('href'));
Ответ 2
trigger ('click') запускает jQuery клик для прослушивания событий, с которым .NET не подключен. Вы можете просто запустить событие javascript click, которое пойдет (или запустит в этом случае) то, что находится в атрибуте href:
$('.myButton')[0].click();
или
($('.myButton').length ? $('.myButton') : $('<a/>'))[0].click();
Если вы не уверены, что кнопка будет присутствовать на странице.
Джо
Ответ 3
Если вам нужно связать событие на стороне сервера OnClick, чтобы запустить его, вам нужно использовать __doPostback (eventTarget, eventArgument).
Пример:
<asp:LinkButton ID="btnMyButton" runat="Server" OnClick="Button_Click" />
<script type="text/javascript">
function onMyClientClick(){
//do some client side stuff
//'click' the link button, form will post, Button_Click will fire on back-end
//that two underscores
__doPostBack('<%=btnMyButton.UniqueID%>', ''); //the second parameter is required and superfluous, just use blank
}
</script>
Ответ 4
вам нужно назначить обработчик события для срабатывания, когда поднят событие click
$(document).ready(function() {
$('.myButton', '#form1')
.click(function() {
/*
Your code to run when Click event is raised.
In this case, something like window.location = "http://..."
This can be an anonymous or named function
*/
return false; // This is required as you have set a PostbackUrl
// on the LinkButton which will post the form
// to the specified URL
});
});
Я тестировал выше с ASP.NET 3.5 и работает как ожидалось.
Существует также атрибут OnClientClick
в Linkbutton, который указывает клиентскую сторону script для запуска при поднятии события click.
Могу ли я спросить, чего вы пытаетесь достичь?
Ответ 5
Обработчик события клика должен фактически выполнить действие. Попробуйте следующее:
$(function () {
$('.myButton').click(function () { alert('Hello!'); });
});
Ответ 6
вам нужно указать linkButton Cssclass= "myButton", а затем использовать его в верхней части
$(document).ready(function() {
$('.myButton').click(function(){
alert("hello thar");
});
});
Ответ 7
Это круто. Насколько я понимаю, вы хотите имитировать поведение нажатия кнопки в javascript-коде. Проблема в том, что ASP.NET добавляет некоторый причудливый код javascript в обработчик onclick.
При ручном запуске события в jQuery будет выполнен только код события, добавленный jQuery, а не javascript в атрибуте onclick или атрибуте href. Поэтому идея состоит в том, чтобы создать новый обработчик событий, который выполнит исходный javascript, определенный в атрибутах.
То, что я собираюсь предложить, не было проверено, но я сделаю снимок:
$(document).ready(function() {
// redefine the event
$(".myButton").click(function() {
var href = $(this).attr("href");
if (href.substr(0,10) == "javascript:") {
new Function(href.substr(10)).call(this);
// this will make sure that "this" is
// correctly set when evaluating the javascript
// code
} else {
window.location = href;
}
return false;
});
// this will fire the click:
$(".myButton").click();
});
Ответ 8
Просто для уточнения, только FireFox страдает от этой проблемы. См. http://www.devtoolshed.com/content/fix-firefox-click-event-issue. В FireFox теги anchor (a) не имеют функции click(), чтобы позволить JavaScript-коду непосредственно имитировать события кликов на них. Они делают позволяют сопоставлять клик событие тега привязки, просто чтобы не имитировать его с помощью функции click().
К счастью, ASP.NET помещает код обратной передачи JavaScript в атрибут href, где вы можете получить его и запустить на нем eval. (Или просто вызовите window.location.href= document.GetElementById('LinkButton1'). Href;).
В качестве альтернативы вы можете просто вызвать __doPostBack ('LinkButton1'); обратите внимание, что "LinkButton1" следует заменить идентификатором ClientID/UniqueID LinkButton для обработки контейнеров с именами, например. UserControls, MasterPages и т.д.
Иордания Ригер