`
orcl_zhang
  • 浏览: 244527 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

动态的增加auto_complete

阅读更多
http://www.iteye.com/problems/35097
以前问的一个问题,今天遇到一个同样的情况,解决了.把代码贴出来,纪念下.
解决起来其实也是比较简单的,用后台来增加auto_complete的partial,动态生成一个id,每个id不同就可以.
controller
  # add_purchase_tax,增加purchase_tax
  def add_purchase_tax
    @purchase_order_marketing = PurchaseOrderMarketing.find_by_id(params[:purchase_order_marketing_id])
    render :update do |page|
      page.insert_html :before,
        :total,
        :partial => '/purchase_invoices/purchase_tax',
        :locals => {:purchase_tax => PurchaseTax.new(:category => 'NewTax',:add => 'plus'),:time => Time.now.to_f}
    end
  end

help
  def fields_for_purchase_tax(purchase_tax,time, &block)
    if purchase_tax.new_record?
      fields_for("purchase_order_marketing[new_purchase_tax_attributes][#{time}]", purchase_tax, &block)
    else
      fields_for("purchase_order_marketing[existing_purchase_tax_attributes][]", purchase_tax, &block)
    end
  end

js
function add_purchase_tax(purchase_order_marketing_id){
    new Ajax.Request('/purchase_taxes/add_purchase_tax',{
        method: 'get',
        parameters: 'purchase_order_marketing_id='+purchase_order_marketing_id,
        evalScripts:true
    })
}

function remove_tax(){
    if($$('tr.newtax').size() > 0){
        var old_value = Number($$('tr.newtax').last().down('span').innerHTML);
        $$('tr.newtax').last().remove();
        var total = $('total_value');
        total.innerHTML = Math.round((Number(total.innerHTML) - old_value)*100)/100;
        $$('input[id$=total]').first().value = total.innerHTML
    };
}

html
<% form_remote_for :purchase_order_marketing,
  :url => save_purchase_order_marketing_url(@purchase_order_marketing),
  :html => { :method => 'post' },
  :complete => "Effect.Appear($('csuccess'));setTimeout(\"Effect.Fade($('csuccess'));\",2500);",
  :failure => "error" do |f| %>

        <%= render :partial => 'purchase_tax' ,:collection => @purchase_order_marketing.purchase_taxes %>

        <tr style="height:20px;">
          <td>
            <input type="button" value="Add" onclick="add_purchase_tax(<%= @purchase_order_marketing.id %>);"/>
            <input type="button" value="Remove" onclick="remove_tax();"/>
          </td>

_purchase_tax
<% time ||= Time.now.to_f %>
<% fields_for_purchase_tax(purchase_tax,time) do |purchase_tax_form| %>
  <% prefix = purchase_tax.new_record? ? "new_#{time}" : "existing_#{purchase_tax.id}" %>

      <td class="tax">
        Tax & Duties
      </td>
      <td>
        <%= purchase_tax_form.select :add,PurchaseTax.default_categories,{},{:onchange => 'change_tax(this);'} %>
        <%= auto_complete_for_client(prefix, "payee",nil,{:width => '70px',:source => PurchaseOrder.default_tax_duties,:fields => [:name],:onblur => 'change_purchase_tax(this);'}) %>
        <%= purchase_tax_form.text_field :rate,{:size => 3,:onchange => 'change_tax2(this);',:readonly => 'readonly'} %> %
        <%= purchase_tax_form.hidden_field :tax_duty_id %>
        <%= purchase_tax_form.hidden_field :tax_duty_name %>
      </td>
      <td>
        <span id="<%= prefix %>_span"><%= (@purchase_order_marketing.sub_total)*purchase_tax.rate/100 %></span> <%= @purchase_order_marketing.uom %>
      </td>
分享到:
评论

相关推荐

    STM32CubeIDE_Auto_Complete.zip

    "STM32CubeIDE_Auto_Complete.zip"这个压缩包很可能是为STM32CubeIDE提供代码自动补全功能的插件。在编程过程中,代码自动补全能提高开发效率,减少手动输入错误,帮助开发者快速找到和使用库函数。这个插件可能包含...

    auto_complete的实现

    在编程和软件开发中,自动补全(Auto-Complete)是一项常用且重要的功能,它极大地提高了程序员的效率,减少了输入错误。本篇文章将深入探讨自动补全的实现原理,并结合源码分析,帮助读者理解其内部工作机制。 ...

    AutoCompleteTextViewDemo

    android:id="@+id/auto_complete_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:completionThreshold="2" /&gt; ``` 2. **数据源** AutoCompleteTextView需要...

    auto complete and photo demo project

    标题中的“auto complete”指的是自动补全功能,这是一种常见的用户界面特性,常见于搜索框、输入字段等,能够根据用户输入的字符预测并提供可能的完成选项,提高输入效率。通常,这种功能是通过匹配历史记录、...

    Android仿百度谷歌自动提示——AutoCompleteTextView

    AutoCompleteTextView autoCompleteTextView = findViewById(R.id.auto_complete_text_view); autoCompleteTextView.setAdapter(adapter); ``` `ArrayAdapter`用于将数据源转换为适配器,以便`AutoCompleteTextView...

    Sublime Text2安装与配置教程_Python

    "auto_complete_delay": 100, "tab_size": 4, "translate_tabs_to_spaces": true, "detect_indentation": true, } ``` 这将开启自动完成,设置缩进为4个空格,并检测已有文件的缩进方式。 最后,别忘了设置...

    Android之AutoComplet的demo

    AutoCompleteTextView autoCompleteTextView = findViewById(R.id.auto_complete_text_view); autoCompleteTextView.setAdapter(adapter); ``` 4. **监听选择事件**:为了将选定的城市显示在`TextView`中,我们需要...

    Easy Pen: Auto suggestions and auto complete-crx插件

    语言:English 在Evernote或Dropbox Paper中以英语或西班牙语获取自动建议...因此,没有数据被收集现在存在的错误:-在段落之间书写,并通过按ENTER键使用建议框中的第一个单词建议,将在光标和下一个段落之间增加一行。

    Android应用源码之MyAutoCompleteTextview.zip

    android:id="@+id/auto_complete_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入关键词"/&gt; ``` 在XML布局文件中,我们可以设置它的宽度、高度、...

    MTK键盘锁与解锁详解

    20. `cat166_animation_complete_callback_int()`: 动画完成回调内部处理。 21. `gdi_anim_callback_timer()`: 动画回调定时器。 22. `TimerCallBack()`: 定时器回调。 23. `MMI_task()`: MTK任务管理。 #### 五、...

    AutoCompleteTextView简单实例

    AutoCompleteTextView textView = findViewById(R.id.auto_complete_text_view); textView.setAdapter(adapter); ``` ### 3. 自定义匹配逻辑 默认情况下,AutoCompleteTextView会在用户输入三个字符后触发匹配。你...

    多边形制作工具

    6. **动画与交互**:在HTML5环境中,可能还支持多边形的动态行为,如旋转、缩放和动画效果,甚至可以实现用户交互。 7. **网格操作**:提供对多边形网格的整体操作,如合并、拆分、剪切等。 8. **视图控制**:多...

    autocompleteTextview控件

    android:id="@+id/auto_complete_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:completionThreshold="1" /&gt; ``` `completionThreshold`属性定义了用户输入...

    使用autoCompleteTextView读取历史记录

    android:id="@+id/auto_complete_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:completionThreshold="2" /&gt; ``` 2. 设置适配器: 在Java代码中,你需要创建...

    AutoCompleteEditTextExample:教程

    AutoCompleteTextView autoCompleteTextView = findViewById(R.id.auto_complete_text_view); autoCompleteTextView.setAdapter(adapter); ``` 6. **设置触发阈值**: 可以通过`setThreshold()`方法设置触发下拉...

    c++ 20 the complete Guide (2022)

    8. **原子浮点数操作(Atomic Float Operations)**:增加了对浮点数的原子操作,使得在并发环境中处理浮点数更加安全。 9. **新库**:如`&lt;bit&gt;`库提供了位操作函数,`&lt;format&gt;`库提供了格式化输出,`&lt;ranges&gt;`库...

    antocompletetextview的模糊查询

    AutoCompleteTextView autoCompleteTextView = findViewById(R.id.auto_complete_text_view); ContactAdapter mContactAdapter = new ContactAdapter(this, null); autoCompleteTextView.setAdapter(mContactAdapter...

    sublime_text_config:sublime text 3 的配置文件(受 https 启发

    3. **自动完成**:Sublime Text 3支持智能感知,可以设置`auto_complete`为`true`来启用自动完成功能。 4. **语法高亮**:通过设置`syntax`属性,可以指定默认的语法高亮模式,这对于多语言开发非常有用。 5. **...

    模拟人生超全秘籍.doc

    27. aspirations.complete_current_milestone:直接完成当前抱负 这个秘籍可以让小人直接完成当前抱负,让小人更加健康和快乐。 28. debug.enable_woohoo [true|false]:个人猜测是可以在 Debug 模式下和人嘿咻 ...

    OpenCart中PayPal Payments Standard(Paypal 标准支付方式)设置.

    - **Auto Return**:设置为“On”,以实现自动返回至您的OpenCart网店。 - **Return URL**:设置为您的OpenCart网店地址,例如:`http://www.yourwebsite.com`。 - **Payment Data Transfer**:设置为“On”。...

Global site tag (gtag.js) - Google Analytics