2011-02-06 3 views
4

変更されたときに自動保存するために、フォームフィールドをレール3プロジェクトに取得しようとしています。私は、次のjQueryのAJAX呼び出しでこれを行うにしようとしています:ajax呼び出しでフォームフィールドを自動保存しようとするとjQueryでエラーが発生する

$j("#list_" + <%= item.list_id.to_s %> + "_item_" + <%=item.id.to_s %>).live("change", 
function(){ 
     $j.ajax({ 
      beforeSend: function(request) { 
       request.setRequestHeader("Accept", "text/javascript"); 
      }, 
      type: 'POST', 
      url: '<%= list_text_item_path(List.find(item.list_id), TextItem.find(item.id)) %>/update', 
      data: { 
       value: $j(this).val(), 
       id: '<%= item.id.to_s %>', 
       list_id: '<%= item.list_id.to_s %>' 
      }, 
      success: function(){ 
       alert("success"); 
      } 
     }); 
}); 

テキストボックスが変更されるたびに、私はjQueryのでは、次のエラーが表示されます。

(c.value || "").replace is not a function 

これは、両方のjQueryの-1.5であります.min.js。 jQuery-1.4.2.min.jsでも同じエラーが発生しました。 (私はそれが何かに役立つかどうかを確認するために1.5に更新しました)

どこが間違っているのか考えていますか? ありがとうございます。

編集:私のHTMLを投稿するときに、フォーム入力要素のコンテナdivに.live()呼び出しがあり、フォーム入力要素自体には接続されていないことがわかりました。私は別の問題を抱えていますが、私はそれが原因で何が起こっているのか把握したら投稿します。

+1

htmlのスニペットとレンダリング済みのjsコードを表示できますか? – Luke

+0

Firebugから、このエラーのバックトレースがありますか?エラーの 'c'は' ajax() 'に' data: 'として渡し、' $ j(this).val() 'はあなたに文字列を与えていないハッシュです(! ?)ので、 '.replace()'はそのメソッドの一つではありません。しかし、どのような関数呼び出しがそのエラーを引き起こしているかを見ることなく、言うことは難しいです。 –

答えて

1

うわー、私はそれを考え出しました。 HTMLリスト項目にinput要素があり、input要素idではなくli idに.live()関数呼び出しが付加されていました。みんなで助けてくれてありがとう。

+0

上記のコードはうまくいくはずですか? –

関連する問題