【问题标题】:jQuery right textbox value are not getting on submitdatajQuery 正确的文本框值没有出现在 submitdata 上
【发布时间】:2016-01-23 09:43:19
【问题描述】:

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

  1. Owl Carusel
  2. Jeditable

在我的示例中,我有四个图像幻灯片,每个图像滑块我都为图像添加了评论部分。对于评论,我使用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 上使用 editable 传递 textbox 值。我在每张无效的幻灯片上都获得了第一张幻灯片文本框值。

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

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

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

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

谢谢。

【问题讨论】:

    标签: javascript jquery html jeditable owl-carousel-2


    【解决方案1】:

    用这个sn-p替换submitdata:

    $(".editable_textarea").editable("http://www.appelsiini.net/projects/jeditable/php/save.php", {
      // ...
      submitdata: function(){ 
         return { projectidx: $(".inv").eq(currentIndex).val() };
      },
      // ....
    }
    

    【讨论】:

      【解决方案2】:

      我看到的一个问题是您如何获取.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 输入。

      这里是your JSFiddle with an alert displaying the correct input value。

      【讨论】:

      • 但我不知道如何将滑块文本框值传递到这里submitdata: { projectidx: $("#dino-example .inv").val() },。
      • 啊,你需要抓取当前幻灯片对应的输入。你可以使用$(this).next('p').children('.inv').val() 来做到这一点。这个选择器的工作原理是从 editable 元素开始,移动到下一个 p 元素,然后向下到 .inv 输入以获取它的值。
      猜你喜欢
      • 2018-05-14
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多