2011-07-16 18 views
2

フォームが送信される前にフォームが変更されているかどうかをテストするための小さなスクリプトを作成しています。だから通常の入力(テキスト、テキストエリアなど)私は使用することができます:HTML <select> defaultValue属性(<options selected = 'selected'>バリエーションではありません)

if(element.defaultValue != element.value) { 
    altered[element.name] = element.value; 
    element.value = element.defaultValue; 
} 

これは問題なく動作します。しかし、選択された入力にはチェックするものはありません。 FirebugではDOMリストに表示されますが、私が信じるのは黒ではなく、ブラウザで追加されたことを意味します(私が間違っている場合は修正します)。

select要素のelement.defaultValueを記録すると、undefinedが返されます。

私の質問には、defaultValue属性がありますか?あるいは、私が活用できる代替手段ですか?あなたは<select>要素のデフォルト選択オプションを設定していない場合(またはあなたが常にデフォルトとして最初のオプションを選択している場合)

答えて

1

、あなたが試すことができます:

if(element.selectedIndex && element.selectedIndex != 0) { 
    //this handles <select> inputs 
    altered[element.name] = element.options[element.selectedIndex].value; 
    element.selectedIndex = 0; 
} 
else if(element.defaultValue != element.value) { 
    //this handles any other kind of input (except not really for checkbox, radio, etc.) 
    altered[element.name] = element.value; 
    element.value = element.defaultValue; 
} 
+0

を、私は別々に維持する必要はありませんでしたので、プロパティに建て利用することを期待していました変数/配列。私があなたのソリューションに似たトラックを下った場合、jqueryメタクラスを使用するかもしれません – Chris

+0

これは私が見つけた答えに最も近いです。 – Chris

1

デフォルトのオプションが属性を持っているdefaultSelected trueに設定します。

あなたはjQueryのでは、デフォルトの選択を取得するには、次の使用することができます:私はあなたがここに取っているパスを参照してください

$('#ddlReceivingStore').children('option[defaultSelected="true"]') 
関連する問題