Javascript Coffeescript未在Ruby on Rails上执行
我正在尝试使用Coffeescript在RubyonRails应用程序中进行一些表单验证。但是,脚本没有执行。我正在尝试添加验证,以检查输入的密码和输入的确认密码是否相等Javascript Coffeescript未在Ruby on Rails上执行,javascript,ruby-on-rails,ruby,coffeescript,Javascript,Ruby On Rails,Ruby,Coffeescript,我正在尝试使用Coffeescript在RubyonRails应用程序中进行一些表单验证。但是,脚本没有执行。我正在尝试添加验证,以检查输入的密码和输入的确认密码是否相等 $(document).on 'ready page:load', -> password = document.getElementById('user_password').value password_confirmation = document.getElementById('user_password
$(document).on 'ready page:load', ->
password = document.getElementById('user_password').value
password_confirmation = document.getElementById('user_password_confirmation').value
validatePassword = ->
password = document.getElementById('user_password').value
password_confirmation = document.getElementById('user_password_confirmation').value
if password.value != password_confirmation.value
password_confirmation.setCustomValidity 'Passwords Don\'t Match'
else
password_confirmation.setCustomValidity ''
return
password.onchange = validatePassword
password_confirmation.onkeyup = validatePassword
我在中提到的“就绪页面:加载”中添加了$(文档)。但它似乎没有任何效果
我对应的.html.erb文件包含以下代码:
<%= f.password_field :password,:onkeyup => 'validatePassword()', class: 'form-control',:required=>true %>
<%= f.password_field :password_confirmation, :onkeyup => 'validatePassword()', class: 'form-control',:required=>true %>
'validatePassword()',类:'form control',必需=>true%>
'validatePassword()',类:'form control',:必选=>true%>
您确定脚本未运行吗?您是否将console.log
放在$(文档)中。在“就绪页面:加载”
回调并检查它
下一件事。。。我相信即使执行了脚本,它也不会工作。在page:load
callback中定义validatePassword
函数时,您不会将其分配给窗口对象。这里所发生的只是在回调中创建了一个从外部无法访问的本地函数(validatePassword()
在erb
文件中)。您应该编写window.validatePassword=…定义…
还有一件事。此行password=document.getElementById('user\u password')。value
返回一个字符串值。几行之后,您正在编写password.onchange=validatePassword
,但问题是password
没有onchange属性(因为它是一个字符串)。您可能希望在这里实现的是password=document.getElementById('user\u password')
您确定资产管道中包含此coffescript文件吗?它是否包含在页面源中?您在浏览器的控制台中有任何错误吗?@bigsolom是的,它在我的资产文件夹中。页面加载后,JavaScript文件也会出现。控制台上没有错误我更正了getElementById中的值部分。我检查了chrome调试器,它正在按照预期的路径运行。但是setCustomvalidity中设置的消息未执行..我认为它与您提到的窗口有关。然而,我无法理解它