在jQuery中使用动态id为隐藏字段赋值

Assign values to hidden fields in jQuery with dynamic id?

本文关键字:隐藏 字段 赋值 id 动态 jQuery      更新时间:2023-09-26

好的,我得到了这个表。该表是通过后端循环动态生成的。像这样:

<%int iterator = 0;    
for(Iterator it = pd.getEntries().iterator();it.hasNext();){
   EntryData entry = (EntryData)it.next();
%>
<tr>
   <td><div id="oldvalue1_<%=iterator%>" class="editable_select"><%=entry.getIdentifiertype()%></div></td>
   <td><input type="hidden" id="newValue1_<%=iterator%>" value=""></td>
   <td></td>
   <td><div id="oldvalue2_<%=iterator%>" class="editable"" ><%=entry.getIdentifier()%></div>
   <input type="hidden" id="newValue2_<%=iterator%>" value=""></td>
   <td></td>  
</tr>
<% iterator++;} %>

我想在这张表上完成的是"就地编辑",有点……我在jQuery中得到了这个函数,它将oldvalue1_*变成一个选择框,如下所示:

$(window).load(function(){
var clickFunction = function(){
 var id = $(this).attr("id");
 var smallId = id.substr(10);//yeah, this is a temporary hack...
 var select = '<select name="select" id="select" onChange="THIS IS WHAT I NEED">';
 var options = ["ITEMNUMBER", "GROUP", "ALLITEMS"];
  for(var i = 0; i < options.length;i++)
    select += '<option value="'+options[i]+'">'+options[i]+'</option>';
    select += '</select>';
    $(this).html(select);
    $(this).unbind('click',clickFunction);
}
$("div.editable_select").bind('click',clickFunction);
});

我想得到的帮助是使用onChange传递新的,选择值隐藏。我有点得到了正确的心态在这里,我认为:onChange="$("#newValue1_"+smallId).value($(this).val());">但是太多的"s"answers"s"简直要了我的命,根本行不通。那么,我该怎么办呢?

对于另一个表元素,我也得到了这个:

$(document).ready(function(){
   $("div.editable").click(function(){
    var newInput = "<input type ='text' class='newInput' value='""+$(this).text()+"'">";
    $(this).html(newInput);
    var id = $(this).attr("id");    
    $("input.newInput").focus();
    $("input.newInput").keydown(function(event){
    if(event.which == 13){  
       var lastDigit = id.substr(10);//Yeah...
       var valNumber = id.substr(8);//These are ugly, im working on it so don't hate on me  :P
       var value = $(this).val();
       $(this).parent().text(value);
       if(valNumber == 2){
        var changedtext = $("#editable2_"+lastdigit).val();//This right
        $("newValue2_"+lastDigit).val(changedtext);// here wont work
       }
    }
   });
});

这里也是我的问题,将值传递给它们的隐藏字段。我检查了alert函数,我得到了var的值,这只是我错过的最后一点。我将感激所有的帮助,我真的需要它在这里。而且,请记住,我对jQuery是一个彻头彻尾的新手,所以像"你应该使用。[插入函数名]"这样的回答不会有多大帮助。

多谢了!& lt; 3(我不知道如何得到时髦的颜色在代码,我很抱歉)

就不能在最后一行少一个#吗?

$("#newValue2_"+lastDigit).val(changedtext);
不是

$("newValue2_"+lastDigit).val(changedtext);// here wont work

你差一点就成功了。

onChange="$("#newValue1_"+smallId).value($(this).val());">

你需要记住的是对onchange holder使用一组引号,对其中的任何内容使用另一组引号。所以…

<select name="dothis" onChange="$('#newValue1_'+smallId+'').val($(this).val());">

应该工作。我拉了一下,以防万一。http://jsfiddle.net/MatthewDavis/Rb3cs/

编辑:我看到你看到的关于生成行。我在这里更新了fiddle: http://jsfiddle.net/MatthewDavis/Rb3cs/1/,并删除了创建选择的变量中的双引号,并用xml表示代替它们。

似乎有效。

编辑我的编辑:同样,对于那些需要帮助但不想看小提琴的人,这里是定义select的行。

var select = "<select name=&quot;dothis&quot; onChange=&quot;$('#newValue1_'+smallId+'').val($(this).val());&quot;><option value='one'>1</option><option value='two'>2</option><option value='three'>3</option></select>";