Botón de enlace en la página y configurarlo como botón predeterminado, funciona bien en IE pero no en Mozila
-
06-09-2019 - |
Pregunta
Tengo un botón en la página y configurarlo como botón predeterminado, funciona bien en IE pero no funciona en Mozila Firefox. ¿Alguien tiene alguna idea de cómo resolver este problema?
Solución
he tenido este tipo de problema con FF3 y ASP.NET linkbuttons. Esto parece ser un error con FF3 (no estoy seguro), pero el guión que se fija es el siguiente:
var __defaultFired = false;
function WebForm_FireDefaultButton(event, target) {
var element = event.target || event.srcElement;
if (!__defaultFired && event.keyCode == 13 && !(element && (element.tagName.toLowerCase() == "textarea"))) {
var defaultButton;
if (__nonMSDOMBrowser)
defaultButton = document.getElementById(target);
else
defaultButton = document.all[target];
if (defaultButton) {
if(typeof(defaultButton.click) != "undefined")
defaultButton.click();
else
eval(unescape(defaultButton.href.replace("javascript:", "")));
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return false;
}
}
return true;
}
Mantener al final de la página para que se reemplaza el método WebForm_FireDefaultButton
dictada por ASP.NET.
Otros consejos
La propiedad DefaultButton
no es compatible para su uso con un LinkButton
. http://msdn.microsoft.com/en-us/ biblioteca / system.web.ui.webcontrols.panel.defaultbutton.aspx
La solución más sencilla es incluir un botón de maniquí en su página con style="display:none"
, establece que a medida que la defaultButton y darle los mismos controladores de eventos como su LinkButton.
Mi primer desbordamiento de pila de escritura, wow: -)
asp.net:
<asp:Panel runat="server" DefaultButton="lbHello">
First name: <asp:TextBox runat="server" ID="txtFirstName" />
<asp:LinkButton ID="lbHello" Cssclass="button" runat="server" Text="Click me" OnClick="lbHello_Click" />
</asp:Panel>
JS:
$(document).ready(function () { $('.button').eventClick(); });
$.fn.eventClick = function() {
function eventClick(a) {
if (a && typeof (a.click) == 'undefined') {
a.click = function () {
var result = true;
if (a.onclick) result = a.onclick();
if (typeof (result) == 'undefined' || result) {
eval(a.getAttribute('href'));
}
}
}
}
return eventClick($(this).get(0));
}
trabajar sólo la primera vez que pulsar ENTER en el cuadro de texto. Después de añadir un poco de texto en el cuadro de texto y luego presionar ENTER, botón predeterminado no se disparará.
Creo que es muy sencillo, basta con añadir caso de cuadro de texto donde se requiere volver después onkeypress js.
txtUserName.Attributes.Add("onKeyPress", "javascript:if (event.keyCode == 13)
__doPostBack('" + btnLogin.UniqueID + "','')");
Esperamos que esto sea útil.