いくつかのCoffeeScript関数を使用して、フォームで検証を実行し、項目が選択されているか、入力が入力されていることを確認しています。送信ボタンがクリックされたときに、関数をもう一度実行しています。関数がすべてtrueの場合、フォームは送信できます。一つが間違っているなら、私はそれを呼びますevent.preventDefault()
。それでも、コードを使用すると、送信ボタンがクリックされたときにページがリロードされます。これは、関数がtrueまたはfalseを返さないかのようです。
これが私のCoffeeScript関数の1つです:
checkHSGradYearSelect = ->
valid = false
hs_present = $("#profile_high_school").val() isnt ""
hs_grad_year_empty = $("#profile_hs_grad_year_1i").val() is ""
if hs_present and hs_grad_year_empty
$("#hs_grad label.message").text("High School Grad Year can't be blank")
else
$("#hs_grad label.message").text("")
valid = true
return valid
他に非常によく似たものが2つあります。
これが私のクリック機能です:
$("form.edit_profile input[type='submit']").click (event) ->
bday_valid = $ checkBirthdaySelects
hs_valid = $ checkHSGradYearSelect
highered_valid = $ checkCollegeGradYearSelect
if !bday_valid or !hs_valid or !highered_valid
event.preventDefault()
誰かが私が間違っていることを理解するのを手伝ってもらえますか?
更新:ログに記録するbday_valid
か、hs_valid
またはhighered_valid
取得した場合
[document, context: document, constructor: function, init: function, selector: "", jquery: "1.8.3"…]