2009-05-07 17 views
1

ASP.NET 1.1からASP.NET 2.0にプロジェクトをアップグレードしています。ASP.NETとJavascriptエラー

<input type="hidden" name="__TabControlAction" /> 

をそして私は、次のJavaScript関数があります:私のaspxページでは、私はこのように、隠されたフィールドを持っている

function __tabStripPostBack(key) { 
var theform; 

if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) { 
theform = document.forms["Form1"]; 
} 
else { 
    theform = document.Form1; 
} 
    theform.__TabControlAction.value='Click'; 
    theform.__TabControlKey.value=key; 
    theform.submit(); 
} 

は、ASP.NET 1.1では、このコードは正常に動作しますが。しかし、今ではASP.NET 2.0にアップグレードしたので、「__TabControlActionはnullまたはオブジェクトではありません」というエラーが発生します。何らかの理由で、たとえそこにあってもJavaScriptが隠しフィールドを見つけることができないようです。誰にでもアイデアはありますか?

答えて

1

フォームの名前は "Form1"ではなく "aspnetForm"でなければならないと思います。あなたは、javascriptのこのビットがrunat = "server"タグを持つすべてのフォームに挿入されているので、直接参照できるはずです。

<script type="text/javascript"> 
//<![CDATA[ 
var theForm = document.forms['aspnetForm']; 
if (!theForm) { 
    theForm = document.aspnetForm; 
} 
function __doPostBack(eventTarget, eventArgument) { 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
} 
//]]> 
</script> 

はこれにあなたのコードを変更してみてください:

function __tabStripPostBack(key) { 
    theForm.__TabControlAction.value='Click'; 
    theForm.__TabControlKey.value=key; 
    theForm.submit(); 
} 
0

theformはまだ定義されていますか?

theform = document.forms['aspnetForm']; 

を言い換えれば、あなたの<form>タグのnameid属性が何であるかを見るためにあなたの生成されたHTMLをチェック:あなたはtheformを宣言するときは、これを試してみる必要があるかもしれません。

+0

でした。それはform1と言います。とにかくそれを['aspnetForm']に置き換えようとしました。それでも同じエラー。 – Icemanind

+0

フォームを設定した後、この 'alert(theform);のように行を入れてみてください。それがnullかどうかを知ることで、問題を絞り込むことができます。 – JerSchneid

0

のではなく、フォームを介してこれを参照し、あなたのinput要素にIDを与えると(「yournewid」)のdocument.getElementByIdを使用することができます。 ?