#javascript #jquery #asp.net #ajax #click
#javascript #jquery #asp.net #ajax #нажмите
Вопрос:
Я ищу способ щелкнуть <asp:LinkButton>
с помощью jQuery. Я также использую <asp:ModalPopupExtender>
с опцией «Да / Нет», поэтому, если пользователь нажимает «да», это запускает функцию javascript, OnOk()
которая должна будет нажать кнопку «Сохранить» на странице, но в данный момент она ничего не делает, просто показывает окно предупреждения:
ASP.NET AJAX
<asp:LinkButton ID="butSaveAssociation" runat="server" OnClientClick="SaveAssociation();" Text="btnSave" />
<asp:ModalPopupExtender BehaviorID="confirmPopup" ID="confirmPopup" runat="server" TargetControlID="butTest"
PopupControlID="ConfirmView" OnOkScript="OnOk();" OnCancelScript="$find('confirmPopup').hide(); return false;" OkControlID="yesButton" CancelControlID="noButton" />
<asp:Panel ID="ConfirmView" runat="server" CssClass="modalPopup" Style="display:none; height:150px; width:250px;">
<center><div>
<table style="margin-left:auto; margin-right:auto;">
<tr>
<td colspan="4" align="left" style="padding-left: 75px; padding-top: 10px;">
Are you sure you want to save the changes?
</td>
</tr>
<br /><br />
<tr>
<td align="left" colspan="1">
<asp:LinkButton ID="yesButton" runat="server" CausesValidation="false" CssClass="YesNoButton" BorderStyle="none" Text="YES">
</asp:LinkButton>
</td>
<td align="right" colspan="1">
<asp:LinkButton ID="noButton" runat="server" CausesValidation="false" CssClass="YesNoButton" BorderStyle="none" Text="NO">
</asp:LinkButton>
</td>
</tr>
</table>
</div></center>
</asp:Panel>
JAVASCRIPT без JQUERY
<script src="~/Scripts/jquery-1.6.1.min.js"></script>
<script type="text/javascript">
function OnOk() {
ClickSaveButton();
}
function ClickSaveButton() {
$('#<%=butSaveAssociation.ClientID %>').click() // not working...
alert('save button clicked.');
}
</script>
Редактировать
Функция ‘SaveAssociation()’ предназначена просто для изменения флага, поэтому она не выполняет фактическое сохранение:
<script type="text/javascript">
function SaveAssociation() {
setDirty(false);
}
function setDirty(changeVal) {
$("#IsDirty").val(changeVal);
}
</script>
<input type="hidden" id="IsDirty" value="" />
Эта функция предназначена просто для проверки, были ли изменения на странице, если были изменения, скрытому полю ‘IsDirty’ будет присвоено значение true. Мне нужно вызвать обработчик VB, который обрабатывает «butSaveAssociation.Click», если пользователь нажимает «OK», чтобы сохранить изменения, например, обратную отправку.
Ответ №1:
Почему бы вам просто не вызвать SaveAssociation() ?
Ответ №2:
В этом случае я бы просто вызвал Save Association, как упоминал Джо. Однако для дальнейшего использования следующий селектор должен дать вам лучшие результаты.
$('[id$=butSaveAssociation]').click();
Neals select также будет работать, если вы не используете главную страницу, но я предполагаю, что это так, поскольку вы пытались получить идентификатор клиента.
Комментарии:
1. Чтобы получить правильный идентификатор, я закончил тем, что сделал это: $(‘a [id $=»butSaveAssociation»]’).attr(«ID»);
Ответ №3:
Попробуйте это:
function ClickSaveButton() {
$('#butSaveAssociation').trigger('click');
alert('save button clicked.');
}
Комментарии:
1. Поскольку он пытался получить идентификатор клиента кнопки, я полагаю, что он использует мастер-страницы, которые искажают идентификатор. Следовательно, этот селектор не будет работать.
2. Верно, фактический идентификатор кнопки ‘ctl05_butSaveAssociation’ и зависит от общего количества элементов управления.
Ответ №4:
У меня была похожая проблема, которую я решил следующим образом:
function clickButton(element)
{
if (element !=null)
{
if (element.click)
{
//IE only
element.click();
}
else
{
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
element.dispatchEvent(evt);
}
}
else
{
//oops..
}
}
Вызывается следующим образом:
clickButton(document.getElementById('<%=butSaveAssociation.ClientID%>'));
Я понятия не имею, почему jquery не работает.
Похоже, что все должно быть в порядке, но у меня тоже не работает:
$('#<%=butSaveAssociation.ClientID %>').click();
Вероятно, это как-то связано с космическим излучением или приливами .. 😉