【问题标题】:Get value of form field before it's submitted在提交之前获取表单字段的值
【发布时间】:2014-02-25 19:41:04
【问题描述】:

我有一个 Django 表单。其中一个字段 (monitoring_method) 使用自动完成灯小部件,该小部件根据另一个字段 (database_type) 中的条目过滤结果。有什么方法可以在提交之前在database_type字段中获取用户输入的值?我会知道如何使用 AJAX(或者可以弄清楚)但我不确定——也许这是我真正的问题——如何将 AJAX 与自动完成结合起来。

class MonitoringMethodAutocomplete(autocomplete_light.AutocompleteBase):
    autocomplete_js_attributes = {'placeholder': 'Choose a database type to enable monitoring method selection'}

    def choices_for_request(self):
        q = self.request.GET.get('q', '')
        db_type = self.request.POST.get('database_type')
        # if not db_type:
        #     return []
        monitoring_methods = Database.objects.values_list('monitoring_method', flat=True)
        return monitoring_methods.filter(database_type__exact=db_type,
                                         name__icontains=q).distinct()
    def choices_for_values(self):
        return []

编辑: 所以,我最初认为我试图做的事情是不可能的,但后来我意识到 q 变量正在做类似的事情......那么为什么 db_type 不工作?

【问题讨论】:

    标签: jquery ajax django django-autocomplete-light


    【解决方案1】:

    是的。

    <script type="text/javascript">
    $(init);
    
    function init() {
      var database_form = $('.asset-form');
      var db_type_field = $('#id_database_type');
      database_form.data('db_type', db_type_field.val());
    
      db_type_field.on('change', function() {
        var db_type = db_type_field.val();
        console.log(db_type);
        $('.autocomplete-light-text-widget').yourlabsAutocomplete().data = {'database_type':db_type};
      });
    
      // disable enter key from posting form
      $('#id_database_type').keypress( function(event) {
          if (event.which == 13) {
              event.preventDefault();
          };
        });
    }
    
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多