解析错误。失踪 ;在声明之前。还有关于改变的疑虑

时间:2014-01-03 13:02:15

标签: javascript jquery onchange parse-error

我想比较jQuery中的两个String,如果它们是相同的,我会显示提交按钮,如果不是网页中的错误消息:

 (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>

我收到此错误:

  

解析错误。失踪 ;在陈述之前

在这一行

  

$( '#密码1')。checkPassword()所在{

我不知道我是否正确地使用“onchange”,任何想法?谢谢!

2 个答案:

答案 0 :(得分:2)

这只是无效的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")">

答案 1 :(得分:1)

onchange="checkPassword()"

表示在输入字段上发生 onchange 事件时,无需参数调用函数 checkPassword

您的JavaScript中没有定义 checkPassword 功能,您要么忘记在此发布,要么打算调用 ns.init