2

我正在为我的项目使用两个 jQuery 插件。

  1. 猫头鹰旋转木马
  2. 可编辑

在我的示例中,我有四个图像幻灯片,每个图像滑块我都为图像添加了评论部分。对于评论,我使用Jeditable插件进行内联评论。

这是我的 HTML 部分:

<div id="dino-example" class="dino-carousel">
    <div class="item">
        <div>
            <h1>
       Slide 1
      </h1>
            <p>
                Ut laborum. Nisi ipsum natus laborum ea nemo distinctio. Laborum aspernatur sed sit, et quod illum.
            </p>
            <p class="editable_textarea" id="paragraph_1">click here to edit text content</p>
            <p>
                <input type="text" class="inv" value="1">
            </p>
        </div>

    </div>
    <div class="item">
        <h1>
      Slide 2
      </h1>
        <p>
            Consequat. Recusandae. Lorem a iure alias officia aut officiis repellendus. Aliquid quasi ad voluptate modi non est veniam, quo.
        </p>
        <p class="editable_textarea" id="paragraph_1">click here to edit text content</p>
        <p>
            <input type="text" class="inv" value="2">
        </p>
    </div>
    <div class="item">
        <h1>
      Slide 3
      </h1>
        <p>
            Tempore, consequuntur est occaecat doloribus qui dignissimos voluptatem eius voluptatem ea iusto.
        </p>
        <p class="editable_textarea" id="paragraph_1">click here to edit text content</p>
        <p>
            <input type="text" class="inv" value="3">
        </p>
    </div>
    <div class="item">
        <h1>
      Slide 4
      </h1>
        <p>
            Sit dolor ut culpa, deserunt placeat, deleniti minus ut magna fugit, rerum aliquid est magni aliqua. Qui unde.
        </p>
        <p class="editable_textarea" id="paragraph_1">click here to edit text content</p>
        <p>
            <input type="text" class="inv" value="4">
        </p>
    </div>
</div>

<div>

</div>

jQuery部分:

var currentIndex = 0;
$(document).ready(function() {
    $("#dino-example").owlCarousel({
        items: 5,
        singleItem: true,
        afterMove: function() {
            currentIndex = this.currentItem;
        }
    });
});

$(".editable_textarea").editable("http://www.appelsiini.net/projects/jeditable/php/save.php", {
    indicator: "",
    type: 'textarea',
    submitdata: {
        projectidx: $("#dino-example .inv").val()
    },
    select: true,
    submit: 'OK',
    cancel: 'cancel',
    cssclass: "editable"
});

现在的问题是,单击提交按钮时,我无法在 ajax 上传递textbox值。editable我在每张无效的幻灯片上都获得了第一张幻灯片文本框值。

submitdata: {
    projectidx: $("#dino-example .inv").val()
},

没有得到$("#dino-example .inv").val()文本框的价值,如果我在第二张幻灯片上。

知道如何传递文本框值吗?

这是我在 JSFiddle 上的示例代码:http: //jsfiddle.net/f43waf7j/3/

谢谢。

4

2 回答 2

2

submitdata用这个片段替换:

$(".editable_textarea").editable("http://www.appelsiini.net/projects/jeditable/php/save.php", {
  // ...
  submitdata: function(){ 
     return { projectidx: $(".inv").eq(currentIndex).val() };
  },
  // ....
}
于 2016-01-23T10:25:15.013 回答
0

我看到的一个问题是您如何获取.inv输入的值。你打电话时:

$("#dino-example .inv").val()

jQuery 正在选择页面上的所有 4 个输入元素,因为页面上有 4 个输入元素与$("#dino-example .inv")选择器匹配。您可以通过$("#dino-example .inv")在控制台中运行来查看此操作:

> $("#dino-example .inv")
< [<input type=​"text" class=​"inv" value=​"1">​, <input type=​"text" class=​"inv" value=​"2">​, <input type=​"text" class=​"inv" value=​"3">​, <input type=​"text" class=​"inv" value=​"4">​]

调用.val()选择器返回第一个匹配元素的值,这是页面上的第一个输入元素。

要获取第二个、第三个或第四个输入元素的值,您需要使用类似.eq()( docs ) 的东西。链接.eq(1)到您的选择器将从匹配的元素集中选择第二个元素。同样,.eq(2)您的选择器将从匹配元素集中选择第二个元素

例如。要从第二张幻灯片中获取输入值,请使用:

$("#dino-example .inv").eq(1).val()

现在,在您的情况下,您想要获取与当前幻灯片对应的输入值。也就是说,当用户在第一张、第二张、第三张和第四张幻灯片上单击“确定”时,您想要获取.inv与该幻灯片关联的输入值。

为此,您可以将多个选择器与this选择器链接在一起,以根据当前幻灯片抓取每个值。

$(this).next('p').children('.inv').val()

对于每张幻灯片都是$(this)editable元素。链接.next('p').children('.inv')选择.inv同一张幻灯片上的输入。

这是您的 JSFiddle,带有显示正确输入值的警报

于 2016-01-23T10:12:06.070 回答