2009-09-29 9 views
5

私はすべての必須フィールドにユーザーが入力するまで、送信ボタンを無効にするフォームがあります。私は最初にonkeyupを使用して必須フィールドにタブを保持し、すべての必須フィールドが満たされたらボタンを有効にしました。FirefoxでGoogleオートフィルを使用しているときにjavascriptイベントをトリガー

しかし、Googleツールバーの[オートフィル]ボタンを使用してフォームに入力したと不満を持ち、送信ボタンがまだ無効になっていました。

各入力要素に対してonpropertychangeイベントを呼び出すことでIEでこの問題を解決しました。うまくいきました。

しかし、Firefoxでは、Googleの自動入力ボタンをクリックしたときに発生するイベントは見つかりませんでした。

大変助けになりました。

+0

それは6年前の問題だったhttp://allinthehead.com/retro/102/the-times-they-are-onchanging)と今日でもまだ。 –

+0

聖なる地獄です、自動入力はshiiteです:http://www.google.com/support/forum/p/Toolbar/thread?tid=7dcddc95f43dac19&hl=ja –

答えて

0

このgoogle toolbar support threadから判断すると、自動入力は開発者にとって巨大なPITAではなく、オフにすることも非常に難しいようです。 Googleは8月9日現在、formautocomplete="off"属性を尊重すると主張していますが、今日の時点ではこの機能はまだリリースされていないようです。

あなたはオートフィルを混同(し、それによって効果的に無効化)するために、あなたの入力要素無意味名(例えばname="xx_Address_32423423")を与えることができるように使用されますが、彼らはストリング内を見て、オートフィルより「インテリジェント」作りましたフィールドが自動入力されているかどうかを判断するために要素名を指定します(再度、そのスレッドの苦情から判断して)。

あなたの場合は、パンチでロールして、Firefoxのonpropertychangeの同等物を見つけることもできます。 DOMAttrModified eventをご覧ください。 event.propertyNameのチェック(つまりことも可能である場合)あなたの現在のonpropertychangeの実装との互換性を保つことです

function realOnChange(event) { 
    var attrName = event.propertyName || event.attrName; 
    if(attrName === 'value') { 
     // etc 
    } 
} 

:Specifially、valueは、オートフィルによって変更されているかどうかを確認するためにevent.attrName propertyをチェックしてみてください。

1

ご回答ありがとうございます。私はこの問題に迅速に対応しなければならなかったので、私は 'setTimeOut()'関数を使って必須フィールドをチェックし、送信ボタンを有効にしました。

$().ready(function() { 
    CheckRequiredFields(); 
    timeOutRtn = setTimeout("AutoMonitorMandatoryField()", "3000"); 
}); 

function AutoMonitorMandatoryField() { 
    if ($("#btnSave").attr("disabled")) { 
     CheckRequiredFields(); 
     timeOutRtn = setTimeout("AutoMonitorMandatoryField()", "3000"); 
    } 
} 

crescentfresh - 私は、DOMAttrModifiedイベントに見て、私はそれが複雑なのsetTimeoutものsetIntervalを追加する必要はありませんme.Thanks

0

のために働くことを得ることができるかどうかを確認します。

ジャスト(、フォームのいずれかの詰め替え可能なテキストボックスの「変更」イベントをキャッチするすべての詰め替え可能なフィールドを通過し、それが空で非表示にない場合はラベル

+1

変更イベントは発生せず、他のイベントは表示されませんそれは自動入力時に発生します。 $(window).loadを実行して$( '入力:-webkit-autofill')を実行する必要があるように見えますが、それでもそれだけではうまくいきます...あなたがまだ探しているなら、究極の解決策です。 –

+0

自動入力時にChromeでイベントが発生しません。 – enyo

関連する問題