Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Coffeescript未在Ruby on Rails上执行_Javascript_Ruby On Rails_Ruby_Coffeescript - Fatal编程技术网

Javascript Coffeescript未在Ruby on Rails上执行

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

我正在尝试使用Coffeescript在RubyonRails应用程序中进行一些表单验证。但是,脚本没有执行。我正在尝试添加验证,以检查输入的密码和输入的确认密码是否相等

$(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中设置的消息未执行..我认为它与您提到的窗口有关。然而,我无法理解它