使用动态ID为jQuery中的隐藏字段赋值?

时间:2013-01-09 14:57:18

标签: java javascript jquery web

好的,所以我拿到了这张桌子。该表是通过后端循环动态生成的。像这样:

<%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将新的selectet值传递给隐藏的。我认为这是正确的心态,我认为:onChange =“$(”#newValue1 _“+ smallId).value($(this).val());”&gt; 但是“s和s的数量正在扼杀我,它不会起作用。所以,我该怎么办?

我还得到了另一个table-element:

$(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
       }
    }
   });
});

这也是我将问题传递给隐藏字段的问题。我检查了警报功能,我得到了var的值,它只是我遗漏的最后一点。 我将非常感谢所有的帮助,我真的需要它。并且,请记住,我在jQuery中总共n00b,所以像“你应该使用。[插入函数名称]”这样的答案不会有太多帮助。

非常感谢! &LT; 3 (我不知道如何在代码中获得时髦的颜色,对不起)

2 个答案:

答案 0 :(得分:1)

不能仅仅是你最后一行中缺少#的问题吗?

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

而不是

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

答案 1 :(得分:1)

你真的很接近这个。

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

您需要记住的是,对于onchange持有者使用一组引号,对于其中的任何内容使用另一组引号。所以......

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

应该有效。为了确保我做了一个小提琴。 http://jsfiddle.net/MatthewDavis/Rb3cs/

编辑:我看到你所看到的关于生成的行的内容。我在这里更新了小提琴:http://jsfiddle.net/MatthewDavis/Rb3cs/1/并在创建select的变量中删除了双引号,并用xml表示替换它们。

似乎工作。有它。

编辑我的编辑:此外,对于需要帮助但又不想看小提琴的人,这里是定义选择的行。

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>";