动态添加/删除输入字段并在单独的div中预览字段值

时间:2016-04-19 15:26:57

标签: javascript jquery

我正在构建调查,我需要能够在另一个div中预览动态输入字段。

例如,我在这里创建文本输入(非常简单)并在单独的div中创建单选按钮:

$('#p_scnt, #p_scnt_' + i +'').live('click', function() {
            $('<p><label for="p_scnts"><input type="text" size="20" id="p_scnt_' + i +'" value="" placeholder="Input Value" /></label> <a href="#" id="removeObject">Remove</a></p>').appendTo(scntDiv);
            $('<p><input type="radio" value="' + crunchValue + '">' + crunchValue + '</p>').appendTo(crunchville);
            i++;
            return false;
    });

http://jsfiddle.net/crunchfactory/tZPg4/15947/

我不确定如何获取这些值,因此很明显&#39; undefined&#39;。

三件事:

我想从文本框中获取值,因为它们被输入到单独div中的值。

我想在文本框中单击以创建一个新的文本框,其中a)似乎只在前2个工作,b)如果一个框具有空值,则不要创建一个对象在另一个div。

谢谢!

2 个答案:

答案 0 :(得分:1)

  

我想从输入的文本框中获取值   单独div中的值。

我认为这就是你的意思:)。

HTML

<button id="btn-add">Add</button>

<div id="source"></div>
<div id="preview"></div>

的Javascript

// --- Main functions --- //
function _createTextInput() {
  var inputWrapper = document.createElement('div');
  var inputElement = document.createElement('input');
  var removeBtn    = document.createElement('button');

  $(removeBtn)
    .html("Remove")
    .addClass("btn-remove-input-wrapper");

  $(inputWrapper)
    .addClass('input-wrapper')
    .append(inputElement)
    .append(removeBtn);

  return inputWrapper;
}

function _createRadioInput() {
  var radioWrapper = document.createElement('div');
  var radioElement = document.createElement('input');
  var radioLabel   = document.createElement('label');

  $(radioWrapper)
    .append(radioElement)
    .append(radioLabel);

  radioElement.type = 'radio';
  radioElement.name = 'group';
  return radioWrapper;
}

// --- Helper functions --- //

function getIndex(me) {
  return $(me).parent().index();
}

function getRadioElement(me) {
  return $('#radio div:nth-child(' + (getIndex(me) + 1) + ')');
}

// --- Event handlers --- //

$('#btn-add').click(function() {
  $('#source').append(_createTextInput());
  $('#radio').append(_createRadioInput());
});

$(document).on('click', '.btn-remove-input-wrapper', function() {
  getRadioElement(this).remove();
  $(this).parent().remove();
});

$(document).on('keyup', '.input-wrapper input', function() {
  var index = getIndex(this);
  var inputText = $(this).val();
  getRadioElement(this).children('label').html(inputText);
});

DEMO

答案 1 :(得分:0)

因为不推荐使用live,我会使用以下格式:

$(document).on("click",'#p_scnt, #p_scnt_' + i,function(){
//
});

然后给每个INPUT一组文本输入(或其他)

$(document).on("keyup",".text-input",function(){
   $("div").html($(this).val());
});

上面的代码需要针对正确的div进行更新,但是它会为每个输入字段输入类型,并将其放入div的HTML中。