1

入力とその値をdivに出力する必要があります。ただし、正しいラベルを正しい入力に一致させる必要があり、一部のフィールドではnull値が許可されているため、一致の問題が発生しています。次のコードを使用して、各ラベル/入力を配列にプルし、出力します。

var inputArr = $('input, select').map(function(){
    return "<p>" + $(this).val() + "</p>";
}).get()

var labelArr = $('label').map(function(){
  return "<p>" + $(this).text() + "</p>";
}).get()

function setValuesForConfirm() {
//Clear Div Contents                
  $("#test-output-1, #test-output").html('');

  for (var i = 0; i < labelArr.length; i++) {
    $("#test-output-1").append(labelArr[i]);
  }

  for (var i = 0; i < inputArr.length; i++) {
    $("#test-output").append(inputArr[i]);
  }
}

したがって、入力のいずれかが空白の場合、フィールドはラベルと一致しません。

私の質問は、現在のように.map()関数を使用して、JSのフィールド名またはIDに配列キーに名前を付けることができますか?

JSFiddle Here

4

2 に答える 2

1

入力を使用してオブジェクトを作成できます。

var formObj={};

$('input, select').each(function(){
    formObj[this.name]={val: this.value, labelText: $(this).prev('label').text()}; 

});

次に、ループオーバーオブジェクトがhtmlを一緒にスローできる場合

$.each(formObj, function(key, item){
    var labelHtml='<p>'+item.labelText+'</p>';
    var inputHtml='<p>Name: '+ key+', value: '+item.val+'</p>';
    /* do something with html*/
})
于 2013-01-27T01:02:47.290 に答える
0

あなたが持っているものは私には問題なく機能しているように見えますが.map、配列を作成し、JavaScriptの配列には数値の序数キーしか持てないため、オブジェクトが必要になります。

var inputArr = {};
$('input, select').each(function(){
    inputArr[$(this).attr('name')] = "<p>" + $(this).val() + "</p>";
});

http://jsfiddle.net/Mz9Vy/1/

于 2013-01-27T01:02:03.050 に答える