2014-10-19 3 views
0

У меня странное поведение в моей форме, она отправляет данные из текстовых полей, но не передает данные с кнопки.Форма, не отправляющая данные кнопки

Это моя форма:

<form name="login_registro" method="POST" id="login_registro"> 
    <input type="text" id="username" name="username" value=""> 
    <input type="text" id="password" name="password"> 

    <input type="submit" name="hacer_login" style="width:auto; height:auto; padding:5px;" class="button" onclick="submitForm('{{matches|last}}/entrar')" value="entrar"> 

    <input type="submit" name="registro" style="width:auto; height:auto; padding:5px;" class="button" onclick="submitForm('{{matches|last}}/registro')" value="regístrate gratis!" > 
</form> 

Передать функцию:

<script type="text/javascript"> 
    function submitForm(action) { 
    document.getElementById('login_registro').action = action; 
    document.getElementById('login_registro').submit(); 
} 
</script> 

В двух страницах (entrar и REGISTRO) Я сделал print_r ($ _ POST); и он показывает только два входа, имя пользователя и пароль. Он не показывает кнопку нажатой.

Если я удалю функцию onclick и добавлю action = "page.php", он отправит два входа плюс нажатую кнопку.

Я знаю, что могу сделать обходной путь, но я хотел бы знать, почему это произошло. Благодарю.

PS: Я прокомментировал все jquery.

ответ

0
function submitForm(action) { 
    document.getElementById('login_registro').action = action; 
} 

Я не понимаю ваш ответ @Vicentiu Bacioiu, но вы дали мне реплику. Как вы сказали, форма отправляется дважды, поэтому удаление строки, где она отправляет форму в функции, работающей для меня.

+0

В принципе, если у вас есть , когда вы нажимаете, что он собирается отправить форму. если вы добавите дополнительный обработчик к этому (функция, которая делает form.submit), которая является другой отправкой. –

+0

Точно, это была проблема. –

1

Ваша проблема в том, что с помощью onclick и отправки формы, представит два раза, так как кнопка отправить уже отправляет форму, и вы добавляете form.submit()

Использование onsubmit="return submitForm('actionName')". Если вы вернете true в конце функции, форма будет отправлена. Если вы вернетесь false, представление будет отменено.

Вы можете сделать это более элегантно, не устанавливая действие динамически и отправляя его как поле формы или параметр (заданный через функцию submitForm), но это подразумевает изменения в вашем серверном коде.

+0

Спасибо за ответ, я подниму вас, но не могу отметить вас как ответ, я добавил ответ самостоятельно. ** Спасибо !! ** –

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