2011-12-21 57 views
9

內的所有元素的值我有一個主要的div和這裏面,有很多輸入文本和單選按鈕。 像這樣:jQuery將自動獲得一個div

<div id="mainDiv"> 
    <input type="text" name="text-1" /> <br/> 

    <input type="radio" name="radio-1" />Yes 
    <input type="radio" name="radio-1" />No <br/> 

    <input type="text" name="text-2" /> <br/> 
    <input type="text" name="text-3" /> <br/> 
</div> 
<img src="img/img.gif" onclick="getAllValues();" /> 

我要定義的函數「getAllValues()」在JQuery中誰得到的所有值「mainDiv」,並​​將其保存在一個字符串。 有可能嗎?

+1

你已經採取了看看'.serialize()'(http://api.jquery.com/serialize/)?這是否符合您的賬單?如果不是,爲什麼? – PPvG 2011-12-21 10:56:08

回答

16

要達到此目的,您可以選擇所有表單域並使用map()從它們的值創建一個數組,可以根據它們的type來檢索這些數組。試試這個:

function getAllValues() { 
    var inputValues = $('#mainDiv :input').map(function() { 
     var type = $(this).prop("type"); 

     // checked radios/checkboxes 
     if ((type == "checkbox" || type == "radio") && this.checked) { 
      return $(this).val(); 
     } 
     // all other fields, except buttons 
     else if (type != "button" || type != "submit") { 
      return $(this).val(); 
     } 
    }) 
    return inputValues.join(','); 
} 

if聲明可以在這裏結合在一起,但我把它們分開的清晰度。

+0

它可以處理輸入文字,但使用單選按鈕只能選取所選的值。 Thankyou rory! – Danilo 2011-12-21 10:40:05

+0

@Danilo沒問題,看我的更新 – 2011-12-21 10:45:04

5

嘗試類似的東西:

function getAllValues() { 
    var allVal = ''; 
    $("#mainDiv > input").each(function() { 
    allVal += '&' + $(this).attr('name') + '=' + $(this).val(); 
    }); 
    alert(allVal); 
} 
2

這裏是解決方案,它是建立你JSON字符串。它獲取文本字段的值,複選框,並選擇元素:

function buildRequestStringData(form) { 
    var select = form.find('select'), 
     input = form.find('input'), 
     requestString = '{'; 
    for (var i = 0; i < select.length; i++) { 
     requestString += '"' + $(select[i]).attr('name') + '": "' +$(select[i]).val() + '",'; 
    } 
    if (select.length > 0) { 
     requestString = requestString.substring(0, requestString.length - 1); 
    } 
    for (var i = 0; i < input.length; i++) { 
     if ($(input[i]).attr('type') !== 'checkbox') { 
      requestString += '"' + $(input[i]).attr('name') + '":"' + $(input[i]).val() + '",'; 
     } else { 
      if ($(input[i]).attr('checked')) { 
       requestString += '"' + $(input[i]).attr('name') +'":"' + $(input[i]).val() +'",'; 
      } 
     } 
    } 
    if (input.length > 0) { 
     requestString = requestString.substring(0, requestString.length - 1); 
    } 
    requestString += '}'; 
    return requestString; 
} 

你可以這樣調用該函數:

buildRequestStringData($('#mainDiv')) 

而結果http://jsfiddle.net/p7hbT/