首页 > 解决方案 > 我需要使用哪个 API 而不是 serializeArray 来获取字段的自定义属性?

问题描述

我正在使用 serializeArray() 来检索表单属性。当我尝试获取属性时,我收到了所有字段的名称和值。

我已经检查了文档https://api.jquery.com/serializeArray/。我知道它将返回所有字段的名称和值。

现在我对某些字段几乎没有自定义属性。我想使用这些自定义属性来检索它们。

我怎样才能做到这一点?

这是我的逻辑。

var data = $('form').serializeArray();
var newData = {};
var queue = {};
data.forEach(function(field) {
    if( field.customField != undefined && field.customField.indexOf("true")>=0 ) {
        queue[field.name] = frm.value
    } else {
        newData[frm.name] = frm.value;
    }

});

我需要获取该 customField 属性,并将其添加到 HTML 字段属性中。

标签: javascriptjquery

解决方案


可能不是最好的,但你可以这样做。

假设您有一组文本框、文本区域等,其中包含自定义数据属性。我在这里所做的是向class您需要在其中获取值/数据属性的那些字段添加一个。

我们以下面的 HTML 为例。

HTML

<form id="frm">
      <input class="serialize" type="text" name="title1" value="Test title 1" data-test1="test AAA" data-test2="test BBB" /><br/>
      <input class="serialize" type="text" name="title2" value="Test title 2" data-test1="test CCC" data-test2="test DDD" /><br/>
      <textarea class="serialize" data-test1="textarea test 1">TEST 22 TEST 11</textarea>
      <button id="btn" type="button">Serialize</button>
</form>

我在这里所做的是遍历具有类的字段.serialize并将值、名称、数据属性等放入数组。

jQuery

$(document).ready(function(){
   $('#btn').on('click', function(e) {  
            var dtarr = new Array();            
            $(".serialize").each(function(){
               var sub = new Array();
               sub['name'] = $(this).attr('name');
               sub['value'] = $(this).val();

               //data attribute example
               sub['data-test1'] = $(this).data('test1');
               sub['data-test2'] = $(this).data('test2');
               dtarr.push(sub); 
            });

            // This will give you the data array of input fields
            console.log(dtarr);
        });
});

希望这可以帮助。


推荐阅读