解析错误.失踪;在语句之前.也对变化表示怀疑



我想比较jQuery中的两个字符串,如果它们相同,如果网页中没有错误消息,则显示提交按钮:

 (function(){
  var tw = window.tw,
    ns = tw.resetpassword = {},
    lib = tw.lib,
    _ = tw.util;
  ns.init = function(){
    $('#password1').checkPassword(){
      var password1 = $('#password1').val()
      console.log(password1);
      var password2 = $('#password2').val()
      console.log(password2);
      if(password1==password2){
        $("#reset-password").removeAttr("style");
        console.log('yes!');
      }else{
        $("#alert-error").removeAttr("style");
      }
    }
    $('#password2').checkPassword(){
      var password1 = $('#password1').val()
      console.log(password1);
      var password2 = $('#password2').val()
      console.log(password2);
      if(password1==password2){
        $("#reset-password").removeAttr("style");
      }else{
        $("#alert-error").removeAttr("style");
      }
    }
  )};
})();

HMTL:

<form action="@securesocial.core.providers.utils.RoutesHelper.handleResetPassword(token).absoluteURL(IdentityProvider.sslEnabled)" autocomplete= "off" method="POST">
        <input class="form-text" id="password1" name="password.password1" type="password" maxlength="128" size="60"  onchange="checkPassword()" placeholder="@Messages("securesocial.passwordChange.newPassword1")">
        <input class="form-text" id="password2" name="password.password2" type="password" maxlength="128" size="60" onchange="checkPassword()" placeholder="@Messages("securesocial.passwordChange.newPassword2")">
        <input class="form-submit email" id="reset-password" type="submit" name="op" value="@Messages("securesocial.password.reset")" style="display:none">
       </form>
    </div>
    <div class="alert alert-error" id="alert-error" font color="red" style="display:none">
    <span style="color: red">@Messages("securesocial.password.error")</span>
    </div>

我收到此错误:

解析错误。缺少 ; 在语句之前

在这一行中

$('#password1').checkPassword(){

我不知道我在"onchange"上做对了,有什么想法吗?谢谢!

这不是有效的javascipt语法!

$('#password1').checkPassword(){
  ...
}

它看起来像是调用方法(.checkPassword())和定义一个新函数的组合。


查看您的 html,看起来您正在尝试调用此函数checkPassword每当任一密码字段中的文本更改时:

<input class="form-text" id="password1" ...  onchange="checkPassword()" ...>
使用 jQuery

时,应避免以内联方式指定函数,而是使用 jQuery .on 方法附加它

 ns.init = function(){
    $('#password1, #password2').on('change',function(){
      var password1 = $('#password1').val()
      console.log(password1);
      var password2 = $('#password2').val()
      console.log(password2);
      if(password1==password2){
        $("#reset-password").removeAttr("style");
      }else{
        $("#alert-error").removeAttr("style");
      }
    });
 }

(注意:无需重复代码两次,上面的代码将相同的行为附加到password1password2

您现在还可以从 html 中删除该属性:

<input class="form-text" id="password1" name="password.password1" 
        type="password" maxlength="128" size="60" 
        placeholder="@Messages("securesocial.passwordChange.newPassword1")">
onchange="checkPassword()"

表示在输入字段上发生 onchange 事件时调用函数 checkpassword(不带参数)。

你的JavaScript中没有定义checkPassword函数,你要么忘了在这里发布它,要么你打算调用ns.init

最新更新