2009-04-29 4 views
1

このHTMLとJavascriptのビットは、IE6、FF2、FF3で動作します。私はそれがまた、IE7で動作しない理由何らかの理由を見つけることはできませんが、this.selectedIndexは、常に人々があまりにもそれほど強く反対し文体物事を変更するには編集0<select>タグのthis.selectedIndexがIE7で動作しないのはなぜですか?

** in javascript file 
function onTypeChange() 
{ 
    alert($('type_id').selectedIndex); 
    if ($('type_id').selectedIndex != 0) 
    { 
     Element.update('chosenType', this.options[this.selectedIndex].text);  
     Form.Element.enable('go_button'); 
    } else { 
     Element.update('chosenType', 'Selected Type'); 
     Form.Element.disable('go_button'); 
    } 
} 

** in html 
<select class="hosp_select_buttons selectbox" id="type_id" name="type[id]" 
     onchange="onTypeChange();"> 
<option value="">Please select</option> 
<option value="1594">Ambulatory Surgical Center</option> 
<option value="1595">Birthing Center</option> 
<option value="1596">Comprehensive Outpatient Rehabilitation Facilities</option> 
<option value="1597">Drug Abuse Treatment Program</option> 
<option value="1598">Mammography</option> 
<option value="1599">Narcotic Treatment Program</option> 
<option value="1600">Outpatient Physical Therapy</option> 
<option value="1601">Private Home Care Provider</option></select> 

**を返します。選択ボックスを変更した後も、selectedIndexは0になっています。このコードはありますが、それでもI.E以外のすべてのブラウザで動作します。 7

+0

は、そのいずれかが動作するJSていますか?私はそれほど多くのJSがonchangeに入ったことは今まで見たことがありません。通常、それは別の方法で付加されているか、関数に入れられています。 –

+0

http://thedailywtf.com/Articles/OnClick-Does-What!.aspxをお伝えしますか? – Greg

+0

2行のjavascript == 30行のフォーム検証コードですか? –

答えて

3

selectedIndexをオプションリストから取得しようとしています。

this.options.selectedIndexの代わりにthis.selectedIndexを使用してください。

また、クリーナーの使用のために、この例を参照してください。http://www.mredkj.com/tutorials/tutorial002.html

+0

これは私が最初に持っていたものでしたが、どちらもうまくいきませんでした。私は選択タグを$( 'type_id')で明示的に取得すること、this.options.selectedIndexの代わりにthis.selectedIndexを使用することなど、あらゆる種類のことを試してきました。 –

+0

興味深い。それは間違いなく機能するはずです。ですから、単に:onchange = "alert(this.selectedIndex);"あなたは正しい結果を得られないのですか? IE7はインストールされていませんが、IE8とIE7の互換モードが正しい結果を示しています。プロトタイプを無効にして、干渉していないかどうか確認したい場合があります。 –

+0

VPCのIE7でリンクしているサンプルページを試してみました。それらのメソッドはdocument.getElementById()を使用していることに注意してください。 –

2

私はこれが古いですけど、私はunasweredここでそれを見て助けることができません。私は、ここでの問題は、あなたが$( 'type_id')を使っていることだと思います。これはjqueryの要素を返します(私は信じています)。実際のHTML要素にアクセスするには、$( 'type_id')[0]などを使用する必要があります。私はあなたがdocument.getElementById( 'type_id')を使用する場合、それは動作するはずだと思います。

編集:DOM要素$( 'TYPE_ID')をアクセスする方法についてBenxaminさんのコメントを反映する変更答え[0]

+0

確かにこれをテストするコードが残っていればいいと思いますが、これは正しい答えだと思います。 –

+0

はい、そうです。 jQueryオブジェクトの最初の要素にアクセスするには、var el = $( '#type_id')[0]を使用し、HTML DOM要素を返すので、el.options [el.selectedIndex] .valueを使用できます。 – Benxamin

関連する問題