【问题标题】:Jquery serialize and serializeArray is not working with google chromeJquery serialize 和 serializeArray 不适用于谷歌浏览器
【发布时间】:2013-03-08 17:18:54
【问题描述】:

我有以下 html。

<fieldset id="fieldset-step_3">   
       <input type="text" value="2" id="rule_form-lead_time" name="rule_form[lead_time]"> 
       <select class="w50" id="rule_form-operator" name="rule_form[operator]">
            <option label="&lt;" value="&lt;">&lt;</option>
            <option selected="selected" label="&gt;" value="&gt;">&gt;</option>
       </select>
       <button type="button" id="next" name="next">Next</button>
</fieldset>

单击下一步按钮时,我使用以下 jquery 代码获取值。

   $('#next').click(function () {
        var values = $('#fieldset-step_3').serialize();
        alert(values);          
   });

此代码适用于 firefox 8 和 opera 11.60 beta。但它不适用于谷歌浏览器 15.0.874.121。

请帮助我。给我另一个从 jquery 获取字段集值的想法。

【问题讨论】:

  • 您是否尝试使用api.jquery.com/serializeArray 使用表单?
  • 验证您的 HTML - validator.w3.org - 并验证您的 JavaScript - jshint.com
  • @Ricardo Arruda - 是的,我用过。它也有相同的结果。
  • @kanishka - 不,我只想要 firfox 和 chrome。
  • @Asuraya 你试过我说的吗?是警报(值);在 chrome 中工作???

标签: jquery html ajax


【解决方案1】:

您似乎发现了一个错误。我在 Chrome 11 中尝试过这个并看到了同样的事情。如果我序列化表单,它可以工作。如果我序列化单个表单元素,它就可以工作。如果我尝试序列化包含所有表单元素或您的字段集标记的 div,它不会。

【讨论】:

  • 我为这个问题挠了挠头。它最终在表单标签上丢失了 enctype="x-www-urlencoded" ,显然 Chrome 需要查看。火狐等没有问题。
【解决方案2】:

这是一种非常简单的方法,但可以完成工作,并且您可以按照自己的方式对其进行自定义。

parseField = function( $object ){
  result = new Array();
  $object.find('select[value!=""], input[value!=""]').each(function(){
    var obj = {};
    obj.key = $(this).attr('name');
    obj.val = $(this).val();
    result.push( obj );
  });
  return result;
}

你可以像这样使用它:

var values = parseField( $('#fieldset-step_3') );
$.each(values, function(i,obj){
  alert( 'My key is: ' + obj.key + ' and my value: ' + obj.val );
});

【讨论】:

    【解决方案3】:

    我今天遇到了这个。 $('#formid').serialize();在 Firefox 上运行良好,但在 chrome 中没有任何结果。 经过一些测试,这是我的答案:

    在 chrome 中,表单名称和 id 必须相同才能使序列化工作。

    【讨论】:

      【解决方案4】:

      嗯,试试添加

      <input type="text" value="2" id="rule_form-lead_time" name="rule_form[lead_time]" />
      

      插入

      <input type="text" value="2" id="rule_form-lead_time" name="rule_form[lead_time]">
      

      验证时我发现

      end tag for "input" omitted, but OMITTAG NO was specified
      
      …ut type="text" value="2" id="rule_form-lead_time" name="rule_form[lead_time]"> 
      
      
      You may have neglected to close an element, or perhaps you meant to "self-close" an element, that is, ending it with "/>" instead of ">".
      

      【讨论】:

        猜你喜欢
        • 2012-09-19
        • 2018-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-03
        • 2014-11-06
        相关资源
        最近更新 更多