私はブランチをバックボーンで使用するためにevent.preventdefault()に問題があります。最初は動作しますが、ページを変更した後は動作しなくなります。event.preventdefault()は2回目のレンダリング後に動作しません
私は、テンプレートにパラメータを渡し、ページがレンダリングされることに応じてビューを持っています。このページには複数のフォームがあり、パラメータに応じて1つを読み込みます。すべてのフォームは、送信ボタンにバインドされたデフォルトを回避していますが、何らかの理由で、ナビゲーションリンクの1つを使用してフォームを切り替えると、preventdefaultが機能しなくなり、フォームがポストされます。なぜこれが当てはまるのでしょうか?コードを見る必要があるかどうかを教えてください。
この例の例: [記事を送信]ナビゲーションリンクをクリックして何かを入力し、[submit]を押します。私は警告を受け取り、何も起こらない。今度は「詩を提出」をクリックして提出をクリックしますが、今回はフォームが投稿されます。私が「詩を提出する」と始まったら、うまくいきます。送信する前に 'submit poem'をクリックしてリフレッシュしても動作します。奇妙な....
編集:追加コードサンプル。テンプレートは、渡された型に従ってレンダリングされます。
class exports.ClientsSettingsView extends UberView
id: 'settings_view'
className: 'view_container'
events:
'submit #credit_card_form' : 'addCard'
'submit #profile_pic_form' : 'processPicUpload'
'submit #edit_info_form' : 'test'
'click #delete_card' : 'deleteCard'
render: (type="info",status=0) ->
$('.spinner#submit').hide()
@ReadUserInfo()
$(@el).html clientsSettingsTemplate {type,status}
@FadeIn()
@
addCard: (e) ->
e.preventDefault()
$el = $(e.currentTarget)
attrs =
card_number: $el.find('#card_number').val()
card_code: $el.find('#card_code').val()
card_expiration_month: $el.find('#card_expiration_month').val()
card_expiration_year: $el.find('#card_expiration_year').val()
options =
success: (response) ->
alert "Added"
error: (e) ->
alert "Error"
model = new app.models.paymentprofile
model.save attrs, options
console.log attrs
動作していないようです。これは、viewコンストラクタがビューがロードされるたびにこれを呼び出すため、問題ではありません。 – userinev
私は最初にあなたの質問を間違って読んでいたはずです。答えを、あなたが説明しているものにもっとインラインである可能な解決策で更新しました。それでも問題が解決しない場合は、コードのスニペットをいくつか入れて、物事のセットアップ方法や進行状況を少し洞察してください。 – ryanmarc
甘い!ライブで問題を解決しました。ダイナミックな挿入/置換が原因だと思います。バックボーンをどのように自動的に行うのかわからない... – userinev