2014-01-16 52 views
0

我有一个自动完成/基本的表单,按预期工作(我想)。我输入三个字符,得到匹配等。 当我选择一个匹配时,无论是用键(并用Enter确认)或鼠标单击它需要另一个回车提交表单。这感觉...不自然:-)ATK4自动完成提交表单上选择或输入

所以我试图让选择后,自动完成/基本表单字段提交表单。

我的第一个(误导)测试涉及尝试做线沿线的东西:

$form->getElement('fieldname')->js('select', $form->js()->univ()->alert('Select!')); 

该火灾时,在表单字段中选择文本,不完全是我一直在寻找。

我开始看着autocomplete_univ.js和(unsuccesfully)添加$(other_field).closest('form')。submit(); 但我完全不了解jQuery/JS,所以我希望有人能帮助我。

关于如何触发(提交)自动完成选择的任何想法?

this.jquery.autocomplete($.extend({ 
     source: data, 
     focus: function(event, ui) { 
      // Imants: fix for item selecting with mouse click 
      var e=event; 
      while(e.originalEvent!==undefined) e=e.originalEvent; 
      if(e.type!='focus') q.val(ui.item[title_field]); 

      return false; 
     }, 
     select: function(event, ui) { 
      q.val(ui.item[title_field]); 
      $(other_field).val(ui.item[id_field]); 
      //Added this line below 
      $(other_field).closest('form').submit(); 

      return false; 
     }, 
     change: function(event, ui) { 
      var data=$.data(this);//Get plugin data for 'this' 
      if(data.uiAutocomplete.selectedItem==undefined) { 
       if("mustMatch" in options) q.val(''); 
       $(other_field).val(q.val()); 

       return false; 
      } 
     } 
    },options)) 
    .data("ui-autocomplete")._renderItem = function(ul, item) { 
     return $("<li></li>") 
      .data("ui-autocomplete-item", item) 
      .append("<a>" + item[title_field] + "</a>") 
      .appendTo(ul); 
    }; 
+0

没有更多阅读: $(other_field).VAL(ui.item [id_field]); 改为 $(other_field).val(ui.item [id_field] .val); 触发提交像我想要的。除了现在我所需要的值不再被传递。 任何人都可以向我解释为什么并建议修复? –

+0

我改回$(other_field).val(ui.item [id_field]);我不知道为什么 - 但现在看起来像预期的那样工作,在需要时通过提交id来提交。 有人可以确认上述代码的工作原理如下:提交表单并通过鼠标选择和按键传递id? 谢谢 –

回答

0

我想你在ATKs JS库中的chane是不正确的。

可能应该工作的是钩住other_field onChange事件。 事情是这样的:

$(other_field).change(
    function(){$(other_field).closest('form').submit();} 
);