2014-09-29 4 views
0

У меня есть форма, настроенная с плагином проверки jQuery.Вызов функции javascript на форме submit (с подтверждением формы jQuery)

посмотреть здесь: http://jsfiddle.net/9q865xof/

И у меня это (не JQuery) Javascript функция от того, как моя форма была подтверждена, прежде чем добавить плагин.

function busregform(form, password) { 

// new input for hashed password 
var p = document.createElement("input"); 

// create element 
form.appendChild(p); 
p.name = "p"; 
p.type = "hidden"; 
p.value = hex_sha512(password.value); 

// clear plaintext password 
password.value = ""; 

// submit the form 
form.submit(); 
return true; 

} 

С функцией hex_sha512() в собственном файле.

Идея здесь состоит в том, чтобы отправить пароль из формы через busregform(), чтобы создать хешированный пароль, чтобы затем отправить для моего PHP-скрипта для обработки.

Я попытался добавить это мой код проверки JQuery:

submitHandler: function(){ 
    var pw = $("#pass").val(); 
    var form = $("#business-reg-form"); 
    busregform(form,pw); 
} 

не повезло ... Не уверен, что теперь делать. Я думаю, я должен использовать ajax?

Как я могу вызвать busregform() при отправке формы, одобренной плагином?

ответ

0

Метод busregform ожидает ссылку дом элемент для form так что вам нужно

$('#business-reg-form').validate({ 
 
    rules: { 
 
    address: { 
 
     required: true, 
 
     minlength: 6 
 
    }, 
 
    email: { 
 
     required: true, 
 
     email: true, 
 
     minlength: 6 
 
    }, 
 
    company: { 
 
     required: true 
 
    }, 
 
    pass: { 
 
     required: true, 
 
     minlength: 6 
 
    }, 
 
    confirmpw: { 
 
     required: true, 
 
     minlength: 6, 
 
     equalTo: "#pass" 
 
    } 
 
    }, 
 
    submitHandler: function() { 
 
    var pw = $("#pass"); 
 
    var form = $("#business-reg-form"); 
 
    //pass the dom element reference 
 
    busregform(form[0], pw[0]); 
 
    return false; 
 
    } 
 
}); 
 

 
function busregform(form, password) { 
 

 
    // Create a new element input, this will be our hashed password field. 
 
    var p = document.createElement("input"); 
 

 
    // Add the new element to our form. 
 
    form.appendChild(p); 
 
    p.name = "p"; 
 
    p.type = "hidden"; 
 
    p.value = hex_sha512(password.value); 
 

 
    // Make sure the plaintext password doesn't get sent. 
 
    password.value = ""; 
 

 
    // Finally submit the form. 
 
    form.submit(); 
 
    return true; 
 

 
} 
 

 
if (!window.hex_sha512) { 
 
    //stub method 
 
    window.hex_sha512 = function(value) { 
 
    return 'hex_sha512-' + value; 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.js"></script> 
 
<form method="post" name="business_regform" id="business-reg-form" action=""> 
 
    <p> 
 
    <input type="text" name="company" id="company" placeholder="company name" required /> 
 
    </p> 
 
    <p> 
 
    <input type="text" name="address" id="address" placeholder="address" required /> 
 
    </p> 
 
    <p> 
 
    <input type="text" name="email" id="email" placeholder="email" required /> 
 
    </p> 
 
    <p> 
 
    <input type="text" name="pass" id="pass" placeholder="password" required /> 
 
    </p> 
 
    <p> 
 
    <input type="text" name="confirmpw" id="confirmpw" placeholder="confirm password" required /> 
 
    </p> 
 
    <p> 
 
    <input type="submit" class="btn" id="business-reg-submit" value="submit" /> 
 
    </p> 
 
</form>
Demo: Fiddle - Вы можете проверить запрос, используя вкладку сети, чтобы увидеть HASHED пароль

+0

Спасибо большое за помогите Аруну. Однако, когда я 'echo $ _POST ['p'];' на странице, на которую он отправляет сообщения, нет значения. Любая идея, почему это может быть? – beyondit01

+0

@ beyondit01 вы смогли проверить запрос с помощью сетевой вкладки –

+0

Нет, это говорит о запрещенной ошибке 403? – beyondit01

Смежные вопросы