2017-10-05 58 views
0

總之,是否有一些自我引用代碼來設置name屬性等於id? 例如,名稱屬性自引用編號

<input name="this.id" id="input1"> 

在長,使用.serialize()需要使用name屬性。假設有一個表單,其中包含許多沒有name屬性的輸入。我所知道的,

然而,在SO一些研究,我認爲,導致如果一個人使用,

<input name="id[]" id="input1"> 

序列化時,該name將有id追加到它。在我的測試中,這個方法產生id%5B%5D(url編碼的id []的字符串)。使用任何可用的方法,是否有簡短的方法來設置name屬性,以便它在每個輸入上引用id屬性?

+0

那麼你爲什麼不設置任何名稱時您創建表單或運行代碼來設置輸入的名稱 – epascarello

+0

實際上,這是可能我會做什麼。好奇心驅動這個查詢。 – bowl0stu

+0

所有這些輸入是如何創建的?似乎開始他們產生的位置將是有意義的 – charlietfl

回答

0

HTML中沒有任何內容會執行該引用,因此您需要手動進行設置。最好的解決方案,當你建立表單時進行設置。或將其設置在引用元素

console.log($("input").attr("name", function(){ return this.name || this.id }).serialize())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="foo1" value="1" /> 
 
<input id="foo2" value="2" /> 
 
<input id="foo3" value="3" /> 
 
<input id="foo4" value="4" />

或只寫你自己的方法

$.fn.serializeId = function() { 
 
    return $(this).map(function(){ 
 
    return this.id + "=" + encodeURIComponent($(this).val()) 
 
    }).get().join("&"); 
 
} 
 

 

 
console.log($("input").serializeId())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="foo1" value="1" /> 
 
<input id="foo2" value="2" /> 
 
<input id="foo3" value="3" /> 
 
<input id="foo4" value="4" />

+0

這是一個解決方案,可能是達到預期目標的最短路線。不過,我更加好奇其他方法去做我所要求的。 – bowl0stu

+0

你想做什麼是不可能的。這兩種解決方案要麼是您設置的,要麼是您自己的序列號。 – epascarello

+0

不可能_yet_。 – bowl0stu