3

ユーザーが日付ピッカーポップアップから日付を選択したとき (または、日付または時刻のいずれかを変更したとき) にフォームを自動的に保存したいと思います。Rails では、フォームを使用して:remote => true期日の属性を単純に変更しています。これは 1 つのフィールドにすぎないため、ユーザーが日付を選択した後に [送信] ボタンをクリックするように強制するのはやり過ぎのように感じます。現在、ユーザーがフォームを更新するとAJAXを使用して更新日を表示するように設定していますが、実際に送信ボタンをクリックすることなくこれを実行したいと思います。

これが私のアーブです:

<%= form_for todo, :remote => true, :url => update_todo_project_path, :html => {:id => "todo#{todo.id}" } do |f| %>
   <%= f.hidden_field :id %>
   <%= f.text_field :due %>
   <%= f.submit %>
<% end %>

Javascript (外部 js ファイルのみ):

$('input#project_todo_due').datetimepicker({
    dateFormat: 'yy-mm-dd',
    timeFormat: 'hh:mm'
});

そして update_todo.js.erb:

$("#dueon<%= @todo.id%>").html("<%= raw escape_javascript(render(:partial => 'duedate')) %>");
4

1 に答える 1

3

私はそれを突き刺すつもりです:

$('input#project_todo_due').datetimepicker({
  dateFormat: 'yy-mm-dd',
  timeFormat: 'hh:mm',
  onClose: function(strDate, datepicker) {
    // According to the docs this situation occurs when 
    // the dialog closes without the user making a selection
    if(strDate == "") {
      return;
    }

    // According to the docs this refers to the input
    // Some digging in jquery-ujs on github make it
    // look like triggering the 'submit.rails' event
    // on the form will cause the normal unobtrusive
    // js helpers to post the form.
    // What's not clear is if the input element has the
    // updated value at this point.
    $(this).parent().trigger('submit.rails')
  }
});

私が使用したドキュメント:

jQuery UI 日付ピッカー -- onClose

Github の jquery-ujs -- 関連する行は 362 から始まります

于 2012-12-23T07:28:38.553 に答える