0

さて、私はこのテーブルを手に入れました。このテーブルは、バックエンドからのループを介して動的に生成されます。そのようです:

<%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());">しかし、「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-functionで確認しましたが、欠落しているのはその最後のビットだけです。私はすべての助けに感謝します、私は本当にここでそれを必要としています。また、私はjQueryの合計n00bであるため、「。[関数名を挿入]を使用する必要があります」などの回答はあまり役に立ちません。

本当にありがとう!<3(コードでファンキーな色を取得する方法がわかりません。ごめんなさい)

4

2 に答える 2

1

あなたはこれに本当に近かった。

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

覚えておく必要があるのは、onchange ホルダーに 1 つの引用符セットを使用し、内部のコンテンツに別の引用符セットを使用することです。そう...

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

動作するはずです。確認するためにフィドルを実行しました。http://jsfiddle.net/MatthewDavis/Rb3cs/

編集:生成された行についてあなたが見ていることがわかります。ここでフィドルを更新しました:http://jsfiddle.net/MatthewDavis/Rb3cs/1/、選択を作成する変数内の二重引用符を取り除き、それらを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>";
于 2013-01-09T15:18:13.360 に答える
1

最後の行に # が抜けているだけではダメですか?

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

それ以外の

$("newValue2_"+lastDigit).val(changedtext);// here wont work
于 2013-01-09T15:09:02.260 に答える