1

問題の説明を始める前に: 時間を割いて読んでいただきありがとうございます。

基本的なイベント カレンダーをコーディングしようとしています。ユーザーは、イベントを作成し、イベント パラメータを更新できる必要があります。既存のイベントがクリックされると、jquery ダイアログが開き、各イベント パラメータの編集可能なテキスト フィールドが表示されます。これまでのところ、これは正常に機能します。唯一の問題は、パラメーターのいずれかが手動で変更されて保存されるとすぐに、テキストフィールドがその値のそれ以上の変更を受け入れないことです。これらは通常、ダイアログが開く前に、クリックされたイベントのパラメーター値に設定する必要があります。

私はすでにstackoverflows serch関数とGoogleを介して私の問題に対する答えを見つけようとしました. ダイアログ作成パラメーターを使用して、イベントパラメーターを入力フィールドに割り当てる関数に設定したり、ダイアログが開く直前にフォームコードを動的に作成したりするなど、私が見つけた多くのことを試しました。何も役に立たないようです。

問題の本質的な点が欠けていると思います。

「fullcalendar」JQuery-Plugin と jquery-ui ダイアログフォーム テンプレートのコードニペットを使用しています。(fullcalendar: http://arshaw.com/fullcalendar/ )
(jquery ダイアログフォーム: http://jqueryui.com/dialog/#modal-form )

これまでお読みいただき、ありがとうございました。

ここに私のコードの一部があります:

    ---Initialisation of fullcalendar----

eventClick: function (event, element) {

     var id = $( "#id" ),
     title = $( "#title" ),
     allFields = $( [] ).add( id ).add( title );

    $( "#dialog-form" ).dialog
        ({
        autoOpen: false,
        height: 320,
        width: 350,
        modal: true,
        close: function() 
                {
                allFields.attr( "value", "" );
                },
        buttons: {
        "Update Event": function() 
                    {
                        var bValid = true;
                    // To-Do: Entry Check Logic
                        if ( bValid ) 
                            {
                                event.title=$("#title").val();

                                $('#calendar').fullCalendar('updateEvent', event);
                                $( this ).dialog( "close" );

                            }
                    },
        Cancel: function() 
                    {
                        $(this).dialog( "close" );
                    }
                }       
            });     

        $("#id").attr("value",event._id);
        $("#title").attr("value",event.title);
        $( "#dialog-form" ).dialog( "open" );

        }
        });
    });

----Some Css----

</head>
<body >
<div id='calendar'></div>

<div class="lightness" id="dialog-form" title="Parameter">
<p class="validateTips">All form fields are required.</p>
<form>
<fieldset id="beforeSubmit">
<label for="id">Id</label>
<input type="text" name="id" id="id"  />
<label for="title">Title</label>
<input type="text" name="title" id="title" value="" />

</fieldset>
</form>
</div>
</body>
</html> 
4

1 に答える 1

0

かなりの苦痛と「壁を突き破って頭を叩く」というかなりの時間の後、私は解決策を見つけました。それが思われるよう

.attr("値",something)

ここでの選択方法ではありません。あらゆる種類のユーザー入力の前に値を定義することは問題なく機能しますが、その後の値の更新に失敗します。私が使用すべきだったものは次のとおりです。

.val(何か)

このメソッドがユーザー入力の後に書き込みを行う可能性があるのに、.attr は書き込みを行わない理由については、私にはまったくわかりません。

私の質問を読んでくれた皆さん、ありがとう!ここの誰かがなぜこれが起こるのか説明できることを願っています。

于 2013-09-06T18:35:07.697 に答える