I have an iframe in asp.net, using c# .
When the iframe with a story ends, I want to fire a button in parrent window via java script.
The iframe window has its own html file and js file. when the iframe come to an end of story
in the js file run
case "ClosePlayer":
trig();
break;
then I call another js file with a simple function
function trig()
{
//$('#<%= SubmitButton.ClientID %>').click();
//document.getElementById('<%= SubmitButton.ClientID %>').click();
document.getElementById("SubmitButton").click();
// alert("javascript here");
}
in the main window in asp.net I have this button
<asp:Button ID="btnProceedToNextTab" runat="server" Text="Proceed" OnClick="btnProceedToNextTab_Click" />
and I want to trigger this with another button via javascript, so the code behind of the function btnProceedToNextTab_Click(); run
<asp:Button ID="SubmitButton" runat="server" Text="Button" OnClientClick="trig();" />
Can anyone help me? I tried to use jquery, but nothing fires the button. The alert messages show ok, but the button is never clicked.
Try something like this in your parent window:
$("#iFrame").contents().find("#ButtonInIframeWindow").live('click',function(){
$('#submitButtonInParentWindow').click();
});
this is false:
document.getElementById("SubmitButton").click();
you have to use jQuery selector like this:
$("#SubmitButon").click();
Can you try this...
You can invoke your click function in javascript function..
document.getElementById('btnProceedToNextTab').click();
Please feel free to mark as answer if it satisfies....
ok found it.
from child (iframe window) call a js file with trig();
function trig()
{
var proceedButton = parent.$('[id$="btnProceedToNextTab"]');
proceedButton.trigger('click');
return false;
}
and in parent window:
<asp:Button ID="btnProceedToNextTab" runat="server" Text="Proceed" Style="display:none;" OnClick="btnProceedToNextTab_Click" />
works for me! thanks.
Related
I wanted to have a Custom Message Box OnClientClick . If the User Selects Yes then the Onclick Event handler in the C# code should get trigger. But somehow i am not able to do this using ASP.net and jquery.
As of now what is happening
Only C# code is triggered
What i was expecting
ClientSide Confirmation message (If User Clicks "YES" ) Then Server-side
code triggers.
My HTML
<form id="form1" runat="server">
<div>
<asp:Button ID="btnSubmit" Text="submit" runat="server" OnClick="btnDelete_Click"
OnClientClick="if(!ShowDeleteFormConfirmation()) {return false;};" />
</div>
</form>
Jquery
function ShowDeleteFormConfirmation() {
var confirmationMessage,
dlgButtons = {
"No": function () {
$(this).dialog("close");
return false;
},
"Yes": function () {
$(this).dialog("close");
return true;
}
};
confirmationMessage = "This form has already been assigned and will be marked as deleted.";
var $panelContainer = $("<div>" + confirmationMessage + "</div>").appendTo('body');
$panelContainer.attr("title", "Confirmation to delete a form");
var myPos = [$(window).width() / 2 - 100, 50];
$panelContainer.dialog({
modal: false,
draggable: false,
position: myPos,
button: dlgButtons
});
}
C# ////OnClick
protected void btnDelete_Click(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Delete button clicked.');", true);
} ```
This is what i wanted to implement.
http://jsfiddle.net/y5z01nbr/
Thanks for having a look.
Ok, while your code would work if you used "confirm" in the js code, that's because alert() and confirm() HALTS the calling code.
However, today, near ALL WEB code libraries are written to NOT halt, and NOT freeze up the browser. And jQuery is one such system. (it does not HALT the code). While I could introduce the concepts of await - that's becoming a wee bit too complex for this POST.
So, what this means:
the jQuery code does NOT halt,
and thus when you click on the button,
the client side code runs WITHOUT halting
and thus the button click (server side code) will
ALSO run right away - not waiting.
So, in the case of a jQuery dialog? You can't HALT the code. this means you have to flip this backwards. The jQuery dialog is to be displayed, AND THEN you have to call/run/click on that server side button. So, you have to add a new button, and use style="display:none" ot the existing button. Then display the dialog, and based on the answer you THEN click on (call) that origional button you have/had now.
The code will thus look like this:
<div>
<asp:Button ID="btnSubmit" Text="submit" runat="server" OnClick="btnDelete_Click"
Style="display:none" clientIDmode="static" />
<asp:Button ID="btnSubmitX" Text="submit" runat="server"
clientIDmode="static" OnClientClick="ShowDeleteFormConfirmation();" />
<\div>
So I dropped in another button - no server behind code. Hide first button with display none, and removed the client click. I moved the client click to 2nd button.
Now, we can do this:
dlgButtons = {
"No": function () {
$(this).dialog("close");
},
"Yes": function () {
$(this).dialog("close");
$('#btnSubmit').click();
}
};
So what we do is launch the dialog. And based on yes, then we click our button. If you choose no, then the dialog is dismissed, but no other action need take place.
A a GENERAL hard and fast rule?
Your browser code is RARE these days blocking code - calling a jQuery.ui dialog and in fact most of these newer UI controls? The code does NOT wait, does NOT halt. And this means you can't use the return true/false to control if the server side event stub will run or not (you can use js confirm(), but not jQuery, since it don't wait, nor halt the code).
My ModalPopupExtender has:
CancelControlID="btnClose"
<asp:Button ID="btnClose" runat="server" Text="Close" Width="50px" />
btnClose can not have an OnClick event. System simply does not work if it does.
My popup form has 3 other buttons, Save. Delete and Cancel.
If any of these are used, the Wizard Next button and the Sidebar Links no longer work. They only work if btnClose is used. I assume it does something to tell the system the popup is closed. How do I make my Save / Delete / Cancel buttons do the same thing? cam I trigger a btnClose.Click?
you can close ModelPopupExtender from code behind as well as from java script based up on your requirements.
C#:
ModalPopupExtender1.Hide();
Javascript:
$find('ModalPopupExtender1').hide(); //keep this in a function an call the same function where ever you want
Here is my code :
<script type="text/javascript">
$(document).ready(function () {
$(window).bind('beforeunload', function () {
alert("unload");
if (closeIt())
$("#<%=Button1.ClientID %>").trigger('click');
});
function closeIt() {
var ans = confirm("save current layout ?");
if (ans) return true;
}
});
</script>
<asp:Button ID="Button1" runat="server" OnClick="btnSaveState_Click" style="display:none;" />
the new problem is that the confirm message is displayed twice on firefox and non of chrome
All the beforeunload handler is really supposed to do is return a string, which the browser then displays in an "are-you-sure-you-want-to-leave" dialog. If the user clicks OK, whatever navigation was about to happen occurs; if they click Cancel, it doesn't. Take a look here for more detail.
The usual thing to do here would be to display a message (by returning a string, not calling confirm yourself) along this lines of "You're about to lose the changes you've made to the current layout; are you sure you want to leave?" and then let the user themselves click Cancel and then Save, or OK if they don't care.
You're having issues, I expect, because you're trying to perform a postback in the handler, and the postback itself would cause an unload. I wouldn't be surprised if the browser deliberately stops this kind of behaviour in the handler, because malicious sites could use it to stop you leaving.
As per your update: only some browsers even allow beforeunoad behaviour. By the looks of it, Firefox does, so you get two dialogs - your confirm and then the browser default one. And by the looks of it, Chrome doesn't, so your event never gets called. (Or maybe Chrome just ignores the event if it does something unexpected, like post back.)
Try this:
<asp:Button ID="Button1" runat="server" Text="Button" CausesValidation="False" onclick="btnSaveState_Click" onclientclick="return confirm('Are you sure you want to delete?')" />
Alternatively you can look at the ASP.Net Ajax <ajaxToolkit:ConfirmButtonExtender>
OK so I have a jquery modal dialog. It accepts an input and then has an ok and and cancel button. Cancel works fine by simply closing the dialog. The ok button fires the OnClientClick when I really want it to fire the OnClick method so I can go into the server controls and log the input into the database using ASP.NET. Any ideas on how this is supposed to be done using jquery?
Side note: I'm not currently by the computer that has the code, but I'll try to update it as soon as I can.
You could try this:
Insert a ASP.NET button on your form, binded to the event that you want to trigger, then, with jQuery do $('#your_button_ID').click(); on the 'OK' event of your dialog.
Hope it helps!
In your codebehind create a static function and add the [WebMethod] attribute, so now you can fire code behind methods from Jquery.
javascript:__doPostBack('IDOfYourControlButton','')
This is the same method a button or linkbutton uses to fire the onClick event in .NET
Demo webmethod
in code behind you add this
[System.Web.Services.WebMethod]
public static string SayHi()
{
return "Hi";
}
in yr aspx file you add this javascript
<script>
function GetHi() {
PageMethods.SayHi(onComplete);
}
function onComplete(result) {
alert(result);
}
GetHi();
</script>
and dont forget to add this also in yr site.master or aspx page right under the
<form runat="server">
<asp:ScriptManager ID="scriptManager" EnablePageMethods="true" runat="server"/>
</form>
How can I create in C# a page to response to another one? So when you press the button,login form opens in a new widow(browser tab or widow), and as you login... the form automaticaly refresh the first page.
Like the Open ID form. You press the (Connect with Facebook) button it opens a new window with the login form and then it refreshes the the website where u pressed the button.
Sorry for my English!! :) & please help!
You open a new window from a button click like this:
Markup:
<asp:button type="button" id="btnLogin" runat="server" Text="Click me" OnClientClick="javascript:window.open('newPage.aspx'); OnClick="ServerSideCode" />
Or with a regular HTML button:
<input type="button" id="btnLogin" value="Click me" onclick="javascript:window.open('newPage.aspx');" />
On newPage.aspx you define a function to auto close the current form and reload the parent form. Something like:
function closeMe()
{
window.parent.location.reload();
self.close();
}
And on server-side, when you handle your button Click event, you add this line all the way at the bottom depending on whether the process was successful. Example:
if(loginSuccessful)
ScriptManager.RegisterStartupScript(this.GetType(), "whatever", "closeMe();");
Learn more about AJAX. And technically, a C# code deal with pages (it may however handle HTTP requests & replies).
you can use ( if you open a new window) the opener object.
and you can also make use of the PostBackUrl
also you can make use of form1.Action