【问题标题】:how to set the name attribute for dymamically created div?..in jquery如何为动态创建的 div 设置名称属性?..in jquery
【发布时间】:2015-01-30 23:52:50
【问题描述】:

每当我点击“添加更多”按钮时,我都会动态创建一个div。这就是我创建div 的方式,如下所示:

     <div id="row-template">
        <div class="cell" >
          <input type="text" value="" class="part-number"/>
        </div>
     </div>

现在我想为这个div设置名称属性:

&lt;div class="cell" &gt;&lt;input type="text" value="" class="part-number"/&gt;&lt;/div&gt;

我将创建多个divs,我想使用request.getParameter("The Part Number Text Box Name");在我的java中获取整个值

我的问题是我的 java 变量是 null (String Part Number = request.get Parameter("The Part Number Text Box Name"))

它给了我空值,因为我无法为这个文本框设置名称属性,我必须使用索引设置唯一名称,然后才可以很容易地在带有索引的 java 中获取。

我要解决的问题是:

  1. 我想在索引的帮助下通过request.getParameter(...) 将我的整个文本框值发送到我的 java 中
  2. 我想知道我创建的所有行的长度有多少 div

请帮我解决这些问题...在此先感谢

【问题讨论】:

  • 看到我想获取多个创建的 div 值,所以我选择了 name 参数,通过索引值的唯一名称帮助将所有值获取到 java..

标签: java javascript jquery jsp


【解决方案1】:

您是否尝试将 name 属性添加到 input 元素而不是 div 元素?

借用上一个答案:

var cnt = 0;
    $("#mybutton").on("click", function () {
         var html = "";
         html += "<div id='row-template'>";
         html += "<div class='cell'>";
        html += "<input name='myName" + cnt +"' type='text' value='' class='part-number'/>";
      html += "</div>";
         html += "</div>";
        console.log(html);
         $("#WhereToAppend").append(html);
         cnt++;
    });

上面的代码是 jquery 代码,它将向 DOM 添加一个新的输入(和周围的 div)元素。它将通过将“cnt”的值附加到字符串“myName”来为每个输入元素提供一个唯一的名称,实际上每次触发时为输入元素提供一个名称“myName0”、“myName1”、“myName2”特定的点击事件。

来自 Input 元素的 W3Schools 定义:

name 属性指定元素的名称。 name 属性用于引用 JavaScript 中的元素,或在提交表单后引用表单数据。 注意:只有具有 name 属性的表单元素才会在提交表单时传递其值。

【讨论】:

  • 所以你能给我任何解决方案,让我使用 req.getParam 获取多个创建的 div 文本框值到 java ...
  • 如果每个 input 元素都有一个 name 属性,它们将显示在 post 参数中。无论您使用的是 java 还是 .net 都无关紧要。您需要每个 INPUT 元素都具有 name 属性 - 而不是 DIV 元素。
【解决方案2】:

我不知道你如何动态附加 div,但在 jquery 中它看起来像这样:

var count = 0;
$("MyAddButton").click(function () {
     var html = "";
     html += '<div id="row-template">';
    //put the name you want here
     html += '<div class="cell" name="myName" ><input type="text" value="" class="part-number"/</div>'
     html += '</div>';
     $("WhereToAppend").append(html)
     count++;
});

【讨论】:

  • right @Mathieu Labrie Parent 我为该 div id 设置了属性名称,但在使用 req.getParameter 时我无法在 jave 上获得它的空值,所以我该如何克服这个问题?...跨度>
  • 我猜 getParameter 正在查询字符串中查找。提交表单时,div 不会传入查询字符串,只有输入。您可以将该值放入隐藏字段中。
  • no @Mathieu Labrie Parent 如果直接输入 like( ) 这个值在 req .getParam 但如果使用当时的当前索引值设置名称属性,则不会将该值设为“null”..
【解决方案3】:

我可能无法为您提供完整的答案,但希望这会引导您朝着正确的方向前进。

1) 如果你的页面是这样调用的:

http://&lt;your_server&gt;:&lt;your_port&gt;/mytest.jsp?crazyParamName=crazyParamAnswer

你可以使用:

String answer = request.getParameter( 'crazyParamName' );

变量answer 将是String,其值为:crazyParamAnswer

使用它来创建您的新输入,方法是将其插入到带有类似 &lt;%= anwser %&gt; 的脚本的页面中

2) 您可以计算单击“添加更多”按钮时创建的 div 数量(我假设是使用 jQuery)

var numberOfCells = $('#row-template').find('.cell').size();

因此,当您创建一个新按钮时,您只需将一个添加到现有的numberOfCells 并将其用作您的索引。每次点击按钮,索引都会增加一个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 2014-03-10
    • 2021-12-30
    • 1970-01-01
    相关资源
    最近更新 更多