2014-01-03 2 views
-4

Я хочу, чтобы сравнить два строки в JQuery, и если они такие же, я показываю кнопку отправки, если не сообщение об ошибке на веб-странице:Ошибка анализа. отсутствует ; перед заявлением. Также сомнения по поводу OnChange

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

я получаю эту ошибку:

Parse error. missing ; before statement

в этой строке

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

Я не знаю, правильно ли я делаю это с помощью «onchange», никаких идей? Спасибо!

+1

'$ ('# password1'). CheckPassword() {' просто недействителен в Javascript. –

+0

Что это должно быть? Назначение функции? Вызов с аргументами? – Bergi

+0

Что это за метод 'checkPassword'? – Bergi

ответ

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"); 
     } 
    }); 
} 

(Примечание: нет необходимости повторять код дважды, что приведенный выше код присоединяет са мне поведение как password1 и password2)

Вы можете также теперь удалить этот атрибут из вашего HTML:.

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

Я видел его здесь: http://stackoverflow.com/questions/15030526/jquery-onchange-event – Anna

+0

@Anna - ничто в этой ссылке не указывает использование атрибута html 'onchange'. Они прикрепляют обработчик события, используя jQuery в соответствии с моим обновленным ответом! – Jamiec

1
onchange="checkPassword()" 

означает вызов функции checkPassword без аргументов при OnChange событие происходит на свой контекстуальный поле ввода.

Там нет checkPassword функция, определенная в вашем JavaScript, вы либо забыли разместить его здесь или вы имели в виду, чтобы позвонить ns.init.