聚合物铁形式的帖子问题

时间:2015-08-13 16:41:22

标签: javascript forms validation polymer polymer-1.0

我一直在尝试使用铁形式和post方法,我对它是如何工作有疑问,或者甚至在某些情况下我应该使用它。所以我试图找到以下问题的答案:

  1. 根据我的理解,铁形式仅用于Ajax请求,因此要定期发布(刷新页面),我不应该使用它,对吧? (真/假)

  2. 如果我不使用is='iron-form',是否还有其他方法来验证纸张输入字段?

  3. (现在这让我感到很困惑。)使用带有post方法的铁形式,我只得到表格数据为"formData: [object Object]",这使得后端的内容完全没用没有获得表单元素值。

    这种行为可以在铁形演示页https://elements.polymer-project.org/elements/iron-form?view=demo:demo/index.html

    上看到

    有没有办法使用铁形式发送帖子并保持常规帖子的行为?

  4. 在StackOverflow上搜索时,此线程似乎会处理类似的问题Sending form with POST method and Polymer iron-form?,尽管“修复”#39;对我来说不起作用,因为我似乎正在使用1.0.8版本。

    bower iron-form#^1.0.0 validate 1.0.8 against git://github.com/PolymerElements/iron-form.git#^1.0.0
    

    formData的原因:[object Object] 所以似乎问题在iron-ajax#1.0.4中得到了解决 我正在使用带有PolymerElements / iron-elements的bower作为依赖,只有碰到版本1.0.0的铁-ajax,一旦我强迫iron-ajax使用v1.0.4,来自表格帖子的Payload似乎得到纠正。

    这个问题驱使我https://github.com/PolymerElements/iron-ajax/pull/80

3 个答案:

答案 0 :(得分:2)

  1. 这完全取决于您的用例。如果您希望页面在成功后重新加载,那么一种方法是使用iron-ajax on-response方法并调用刷新页面的函数
  2. HTML

    <iron-ajax
        auto
        url="http://gdata.youtube.com/feeds/api/videos/"
        params='{"alt":"json", "q":"chrome"}'
        handle-as="json"
        on-response="handleResponse"
        debounce-duration="300"></iron-ajax>
    

    例如

    之类的东西
    function handleResponse(){ location.reload(); }
    

    或者您可以使用this idea from robdodson并复制所有表单输入,让每个聚合物元素将数据绑定到匹配的隐藏常规表单元素中。

    1. 有很多方法,这里有一个http://plnkr.co/edit/2C7KmE?p=preview

      <numbers-input></numbers-input>
      
      <polymer-element name='numbers-input'>
        <template>
          <paper-input-decorator id='myPaperInput' label='Number' error='numbers only' floatingLabel autovalidate>
            <input is='core-input' pattern='^[0-9]*$'>
          </paper-input-decorator>
        </template>
        <script>Polymer();</script>
      </polymer-element>
      
    2. 嗯,不确定原因。似乎是一个糟糕的演示/错误。我看了一下源代码,但没有看到任何明显的东西。我想知道iron-ajax是否真的需要什么? https://elements.polymer-project.org/elements/iron-ajax可以是

答案 1 :(得分:2)

第3点的原因,其中铁形式传递了formData:[object Object]

所以似乎这个问题在iron-ajax#1.0.4中得到解决我正在使用带有PolymerElements / iron-elements的bower作为依赖,只有碰到版本1.0.0的铁-ajax,一旦我强迫铁-ajax使用v1.0.4,表单帖子中的Payload似乎得到纠正。

这是驱使我https://github.com/PolymerElements/iron-ajax/pull/80

的问题

答案 2 :(得分:2)

@ 2:在任何paper-inputiron-input上,只要您想强制验证,就可以致电validate()。您还可以在输入中使用自定义验证器。