操作する必要があるフォーム フィールドである「targetElement」という jQuery オブジェクトを渡す関数があります。この関数を使用して、ロード後にフォームのデフォルト値を設定します。1 つのフォームには、3 つの非表示のフォーム要素 (aka、<input type="hidden">
) があり、それぞれに値が割り当てられ、3 つのうち 2 つが正常に機能します。3つ目は私を夢中にさせています。
関数内のコード スニペットを次に示します。
case "today":
SetFieldValue (targetElement , Date.today().toString("yyyy-MM-dd HH:mm:ss") );
console.log ('Setting ' + jQuery(targetElement).attr('id') + ' to "today": ' + Date.today().toString("yyyy-MM-dd HH:mm:ss") );
break;
SetFieldValue 関数の場所:
function SetFieldValue ( domObject, value ) {
// as a safety function, check if a string representation of the domObject was passed in and convert it to a jQuery object if it was
if ( jQuery.type(domObject) === "string") {
domObject = jQuery(domObject);
}
if ( jQuery.inArray (domObject.prop('tagName').toLowerCase(),['input' , 'select' , 'textarea']) >= 0 ) {
console.log ("setting to value attribute: " + value);
domObject.attr('value',value);
console.log ("now set to: " + domObject.attr('value') + "(" + domObject.attr('id') + ")" );
} else {
console.log ("setting to html attribute");
domObject.html( value );
}
return domObject;
}
つまりね。SetFieldValue の呼び出しの直後にデバッグ ブレークポイントを設定しました。値が設定されていることを明確に示す「targetElement」と入力しました。それでも、DOM フィールドへの jQuery 参照を入力すると、値が設定されていない状態で表示されます。は?
ここで、言及しなかったことが 1 つあります...これは重要だと思います...デバッガーに「targetObject」と入力すると、最初に空の配列が返されました。
それから 1、2 秒後に、最初に見たスクリーン ショットに自動的に拡大されました。助けてください!
アップデート
これまでのすべての助けに本当に感謝していますが、本当の問題は、targetElement (jQuery オブジェクト) への応答の「遅延」によって暗示されているのではないかと思います。詳細については、上記を参照してください。また、別の興味深いスナップショットを以下に追加しました。コード内の log.console ステートメントに気付いた場合、これは理にかなっています。
私がやろうとしたことは次のとおりです。
a) 値を何に設定するかを述べる b) 示された意図に値を設定する (aka, 2012-12-02 00:00:00) c) 設定されていることを確認する (設定されている) d) 次に呼び出しルーティングから再度確認します(これも設定されていることを確認します)
最後の log.console (「break」ステートメント) の直後の行にブレークポイントを設定すると、デバッガーはすべてのコンソール メッセージに同意しません。奇妙な!
更新 2
人々は追加のコンテキスト、正確には「コード」を求めてきました。問題を再現するコードのコンパクトなモジュールを提供する良い方法を見つけるのに苦労しているので、問題を示す短いスクリーンキャストが役立つと思いました. そのための 2 つの試みを次に示します。