0

我有一个包含多个输入字段的表单,我需要每个输入字段旁边的一个按钮,它将该字段上的值复制到它旁边的相关字段中。虽然这可能真的很令人困惑,但这里有一个小提琴来帮助说明我想要实现的目标。

http://jsfiddle.net/nmfurr/nA37d/234/

$(function () {
var i = 0;
var rowID = $('.row').each(function () {
    i++;
    var newID = 'row' + i;
    $(this).attr('id', newID);

});

以上是我尝试将 ID 添加到两个输入字段周围的每个 div 容器的位置。我假设这是针对我需要的两个的最佳方法。

rowID.each(function () {
    var rowID = $(this);
    $("#row1").find(".copy-btn").click(function () {
        var doppelValue = $("input[id^='edit-doppel-field-und-0-value--']");
        var pristineValue = $("input[id^='edit-field-hub']");
        doppelValue.val(pristineValue.val());
        return false;
    });
});

这是我尝试复制值的地方。我遇到的问题是一个复制按钮正在复制第一个输入字段并将结果插入到每个其他输入字段中。有什么建议么?

4

3 回答 3

1

您可以获取前一个输入的值并将其复制到下一个使用index.

$(function () {
  $(".copy-btn").click(function () {
    var index = $(":input").index(this);
    var prevInput = $(":input:eq(" + parseInt(index - 1, 10) + ")");
    var nextInput = $(":input:eq(" + parseInt(index + 1, 10) + ")");
    nextInput.val(prevInput.val());
    return false;
  });
});
于 2013-09-03T13:43:05.833 回答
0

您的代码问题是您选择具有相同 id 选择器的元素所以您的查询返回表单上的所有输入而不是正确的元素:我更改了您的代码,它在 jsfiddle 中似乎很好:

$(function () {
var i = 0;
var rowID = $('.row').each(function () {
    i++;
    var newID = 'row' + i;
    $(this).attr('id', newID);

});

rowID.each(function () {
    var rowID = $(this);
    rowID.find(".copy-btn").click(function () {
        var doppelValue = rowID.find("input[id^='edit-doppel-field-und-0-value--']");

        var pristineValue = rowID.find("input[id^='edit-field-hub']");

        doppelValue.val(pristineValue.val());
        return false;
    });
});
于 2013-09-03T13:48:27.023 回答
0

你的html可能会改变吗?做到这一点的最好方法是简单地遍历 dom ......

$('.copy-btn').on( "click" , function(e) {

  var selector = "[class^=span]";
  var $this = $(this);
  var $first = $this.closest( selector ).prev( selector ).find("input");
  var $second = $this.closest( selector ).next( selector ).find("input");

  $first.val( $second.val() );

  e.preventDefault(e);

});

http://jsfiddle.net/nA37d/240/ <-- 有效

于 2013-09-03T13:37:35.680 回答