ページにリンクボタンがあり、デフォルトボタンとして設定しています。IEでは正常に動作しますが、MozilaFirefoxでは動作しません。誰かがこの問題を解決する方法の手がかりを持っていますか?
5 に答える
このDefaultButton
プロパティは、での使用はサポートされていませんLinkButton
。http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.panel.defaultbutton.aspx
最も簡単な解決策は、ページにダミーのボタンを含め、それをデフォルトボタンstyle="display:none"
として設定し、LinkButtonと同じイベントハンドラーを指定することです。
FF3とASP.NETのリンクボタンでこの種の問題が発生しました。これはFF3のバグのようです(確かではありません)が、修正されたスクリプトを以下に示します。
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;
}
WebForm_FireDefaultButton
ASP.NETによってレンダリングされたメソッドをオーバーライドするように、ページの最後に保持します。
私の最初のStackOverflow書き込み、すごい:-)
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));
}
テキストボックスでEnterキーを押したときにのみ機能します。テキストボックスにテキストを追加してEnterキーを押した後、デフォルトボタンは起動しません。
非常に単純だと思います。ポストバックが必要なテキストボックスのonkeypressjsイベントを追加するだけです。
txtUserName.Attributes.Add("onKeyPress", "javascript:if (event.keyCode == 13)
__doPostBack('" + btnLogin.UniqueID + "','')");
これがお役に立てば幸いです。