Asp.Net 形DefaultButtonの誤Firefox
質問
きます。純生成コードフォルムを実現するとともに"DefaultButton"属性セットが貧しいjavascriptを可能にする機能性作家が他のブラウザ(Firefox specifcially).
打enterキーが提出すべてのブラウザがFirefoxできない無視し、キーを押すときに起こる内 <textarea> ます。その結果、複数行テキストエリアを制御できない複数行にFirefoxとしてenterキーを提出の代わりに新しい。
詳しい情報のバグ 読みはこちら.
この固定Asp.Net 3.0+は回避策がまだ作成されるため2.0にアクセスしてください。
そのアイデアは、最軽量の回避策(ハッキングをしないように見えhack=D)?の溶液に上記のリンクの救いているからできて意図しない副作用.
解決
その結果が、先ほど任天堂さんの機能に適応したからcodesta.[編集:同一、見て、その脅威!てへ。できます。]
http://blog.codesta.com/codesta_weblog/2007/12/net-gotchas---p.html.
使用する周囲のコードと事のようです。きサブクラスに含ます。使わないのであれくらいそれくらいどれくらいかかった。
<div onkeypress="return FireDefaultButton(event, '<%= aspButtonID.ClientID %>')"> (your form goes here) </div>
この機能です。
function FireDefaultButton(event, target) { // srcElement is for IE var element = event.target || event.srcElement; if (13 == event.keyCode && !(element && "textarea" == element.tagName.toLowerCase())) { var defaultButton; defaultButton = document.getElementById(target); if (defaultButton && "undefined" != typeof defaultButton.click) { defaultButton.click(); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return false; } } return true; }
他のヒント
この修正codesta.com このハーポリンクの必要が無くなって固定します。srcElementなintegradeにASP.NET 3.5.の実施DefaultButtonなしの課題が残されてなく、Enterキーを押しあまりにも多い。例えば:ていれば起動ボタンを使用tab、Enterキーを押す必ボタンをクリックを提供しなくてもいいのです。
次のJavaScriptコードではASP.NET ウェブページで行ってください入力を振る舞うです。
// Fixes ASP.NET's behavior of default button by testing for more controls
// than just textarea where the event should not be caugt by the DefaultButton
// action. This method has to override ASP.NET's WebForm_FireDefaultButton, so
// it has to included at the bottom of the page.
function WebForm_FireDefaultButton(event, target) {
if (event.keyCode == 13) {
var src = event.srcElement || event.target;
if (!(
src
&&
(
src.tagName.toLowerCase() == "textarea"
|| src.tagName.toLowerCase() == "a"
||
(
src.tagName.toLowerCase() == "input"
&&
(
src.getAttribute("type").toLowerCase() == "submit"
|| src.getAttribute("type").toLowerCase() == "button"
|| src.getAttribute("type").toLowerCase() == "reset"
)
)
|| src.tagName.toLowerCase() == "option"
|| src.tagName.toLowerCase() == "select"
)
)) {
var defaultButton;
if (__nonMSDOMBrowser) {
defaultButton = document.getElementById(target);
}
else {
defaultButton = document.all[target];
}
if (defaultButton && typeof (defaultButton.click) != "undefined") {
defaultButton.click();
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return false;
}
}
}
return true;
}
この特定の問題になっていると思うからでjavascriptによ ASP.NET 2.0はIEのみ表記:イベントです。srcElementは延に FireFox用のイベントです。対象の代わりに):
function WebForm_FireDefaultButton(event, target) {
if (!__defaultFired && event.keyCode == 13 && !(event.srcElement &&
(event.srcElement.tagName.toLowerCase() == "textarea"))) {
var defaultButton;
if (__nonMSDOMBrowser) {
defaultButton = document.getElementById(target);
}
else {
defaultButton = document.all[target];
}
if (defaultButton && typeof(defaultButton.click) !=
"undefined") {
__defaultFired = true;
defaultButton.click();
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return false;
}
}
return true;
}
変更した場合は、第2線:
function WebForm_FireDefaultButton(event, target) {
var element = event.target || event.srcElement;
if (!__defaultFired && event.keyCode == 13 && !(element &&
(element.tagName.toLowerCase() == "textarea"))) {
の変更コードファイルを入れていく
protected void Page_Load(object sender, EventArgs e)
{
ClientScript.RegisterClientScriptInclude("js1", "JScript.js");
}
その立ち上げてからは、IE、FireFox.
ソース:
http://www.velocityreviews.com/forums/t367383-formdefaultbutton-behaves-incorrectly.html