2011-08-23 8 views
6

jQueryモバイルテキスト入力の表示テキストの設定に問題があります。以下では動作が初めてモーダル表示し、本当に奇妙で、テキスト入力ボックスは、モーダル(jqueryのモバイル簡単なダイアログプラグイン)上で、テキストは上の入力フィールドにあるJQueryモバイル入力フィールドのテキストを設定する

$('#editPartyName').textinput(); 
$('#editPartyName').val(party.name); 

私のコードですちょうど良いモーダル。しかし、モーダルが2回目に表示されると、入力の視覚的なテキストはなくなります。私は要素の値を確認するとき、アラート($( '#editPartyName).val());値はそこにあり、正しいです。テキストは要素に表示されません。私はJQM Beta 1を使用しています。また、val()宣言の後に$( '#editPartyName')。textinput()を貼り付けようとしました。

誰もが何か提案がありますか?ありがとうございました!あなたが.textinput()を使用していて、.textinput("refresh")を使用する既存のjQueryモバイルのテキスト入力の表示を更新するためにスタイリングのjQueryモバイルのテキスト入力を作成するには

+0

プログラムで '.val(" ")'を介して値を設定し、 '.focus()を呼び出すと、ポストスタイリングの問題が発生しました。blur() 'はそれを解決しました。 – pstanton

答えて

3

。その後の呼び出しでは.textinput("refresh")メソッドを使用する必要があり、初期化されていないテキスト入力では.textinput()を使用する必要があります。私の経験では、選択入力であるが、私は、それはここで、テキスト入力のための同じだと考えていることは、私はビューを更新するために選択のために何をすべきかです

$('#editPartyName').val(party.name).textinput('refresh'); 

$("select#foo").selectmenu("refresh"); 

このよう

何か例:docs:http://jquerymobile.com/demos/1.0b1/docs/forms/forms-selects.html(ページの一番下)

更新

あなたが入力要素の値を変更する以外に何もする必要はありません。ここで

$('#editPartyName').val(party.name) 

はjQueryのモバイル1.1.0を使用したデモです:http://jsfiddle.net/VbAKL/

そして、ここではjQueryのを使用してデモですモバイル1.0B1:http://jsfiddle.net/VbAKL/1/

IDで選択していて、一度に複数のIDのインスタンスがある可能性があるため、この問題が発生する可能性があります。 DOM内に複数の「疑似ページ」を一度に持つことができます。IDが#headerの各ページに要素がある場合、#headerの選択を実行しようとすると、最初のインスタンスのみが返されます。したがって、あなたの$('...').val(...)関数呼び出しが正しく機能している可能性があります。

短い答え:jQuery Mobileを使用している場合、IDがサイト内のすべてのページで一意であることを確認してください。

+0

ポストジャスパーのおかげで、私はあなたの提案を試みたが、うまくいきません...単純なダイアログプラグインに精通していますが、生のHTMLを作成しています(私は入力フィールドを宣言しています)モーダル画面に配置します。入力フィールドは正しく表示されていますが、上記のエラーがあります。同じリスナー(私は、モーダルのためのhtml宣言とそれを発生させるクリック)で私に与えたコードを配置すると、実際には$( '#editPartyName')の後にすべての実行が強制終了されます。私は何が起こっているのかわかりません... – user906824

+0

jQuery Mobileのドキュメントでは、.textinput()メソッドについて何も言及していません。とにかく試してみましたが、textinputウィジェットインスタンスのために "このようなメソッドは 'リフレッシュされませんでした" –

+0

@MaffooClock http://jquerymobile.com/demos/1.1.0/docs/forms/textinputs/methods.html。そのリンクを試してください。 '.textinput()'メソッドについて説明しています。私の元の答えのリンクは、jQuery Mobile 1.0の最初のベータ版です。 – Jasper

12

私もこれに遭遇しました。私は$('#some_id').val('foobar')でテキスト入力の値を設定し、console.info($('#some_id').val());でコンソールに値を表示できましたが、ブラウザではテキスト入力が空でした。

しばらくそれを突き刺した後、私は$('input[id=some_id]').val('foobar')が期待通りに機能していることを知りました。だから、明らかに、IDで要素を参照するjQueryに何らかの異常なバグがあります。

+2

IDで参照する場合、jQuery Mobile疑似ページは同じDOMに格納されるため、サイト全体で一意であることを確認してください。したがって、あるページで '#header'を選択しようとしている場合は、代わりに別のページで'#header'を選択している可能性があります(最初のものが返され、残りは無視されます)。 – Jasper

+0

私の場合、重複IDはありません。 –

+0

それはJqueryの奇妙な変わったものです。本当にありがとう –

関連する問題