質問

きます。純生成コードフォルムを実現するとともに"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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top