0

解決済み - 自己承認を 2 日間待つ

jQueryUI ダイアログを使用してデータ入力フォームを表示します。

ユーザーが [次へ] をクリックすると、ダイアログのサイズが変更され (いくつかのコントロールが追加されます)、ダイアログをウィンドウの上部に再配置したいと考えています。

NEXT ボタンはbuttons{}、.dialog の領域内で評価されます。

$('#new_contact').dialog({
    autoOpen: false,
    modal:true,
    title: 'Enter contact information:',
    width: 800,
    buttons: {
        Next: function() {
            var vet = verify_dialog_fields();

            if (second_time_thru == 0) {
==> ==> ==>     $('#new_contact').dialog( "option", "position", 'top' );
                ask_choose_projects();
                return false;
            }
--= SNIP! =--

ダイアログが再配置されていないため、positionコマンドが間違っているか、何か他の問題があります。

この不完全なコード スニペットから、私が何を間違っているかわかる人はいますか?

.dialog() 自体の中で .dialog("option") を呼び出しているため、何か間違ったことをしたと思われます。

少なくとも、position3 つの矢印で示されるオプションが正しいことを確認する必要があります。

4

1 に答える 1

0

ダイアログ自体の初期化内からダイアログのオプションを変更できないことは理にかなっていますが、この回避策でうまくいきました。

それは確かにクラッジですが、うまくいきました:

  1. <span id="dummy"></span>メイン文書にダミー要素を作成する
  2. #dummyスパンがクリックされた場合にフォームの位置を変更する jQuery コードを追加します。
  3. ボタンの関数でNext:、#dummy 要素のクリックをトリガーします。

新しい HTML:

<span id="dummy"></span>

NEXT 関数の修正されたコード:

$('#new_contact').dialog({
    autoOpen: false,
    modal:true,
    title: 'Enter contact information:',
    width: 800,
    buttons: {
        Next: function() {
            var vet = verify_dialog_fields();

            if (second_time_thru == 0) {
==> ==> ==>     $('#dummy').trigger('click');
                ask_choose_projects();
                return false;
            }
--= SNIP! =--

新しい jQuery コード:

$('#dummy').click(function() {
    $('#new_contact').dialog( "option", "position", 'top' );
});
于 2013-07-09T19:44:30.313 に答える