проверка по кнопке отправки - PullRequest
6 голосов
/ 26 декабря 2011

У меня есть кнопка отправки, подобная этой:

<input class="create_button" name="commit" 
       onclick="return validate_activity();" 
       type="submit" value="Save">

Я обнаружил, что эта кнопка всегда будет отправлять запрос на сервер независимо от того, возвращает ли validate_activity () значение true или false?

В чем здесь проблема?

ОБНОВЛЕНИЕ

На самом деле, я допустил ошибку в моей validate_activity (), она заставляет меня думать, что она вернула false,но это не так.

Ответы [ 6 ]

10 голосов
/ 26 декабря 2011

попробуйте сделать то же самое без возврата, например, onclick="validate_activity();" и проверьте, возвращает ли ваша функция значение false в случае недействительности

3 голосов
/ 26 декабря 2011

Попробуйте это ...

<form action="...." onsubmit="submitForm()" name="form">

<input type="submit" value="Save">

</form> 


function submitForm(){

    if(validationfails){

        return false;
    }
    else  {
        document.form.submit();
        return true;
    }
 }
3 голосов
/ 26 декабря 2011
<input type="button" name="commit"
value="Save"
onclick="validate_activity(myform)" />

Внутри Javascript, при проверке, form.submit() или возвращать false.

Надеюсь, это поможет! Это подтвердит вашу форму и отправит ее. Эта отправка завершится ошибкой, если в вашем браузере отключен JavaScript.

если вы хотите, чтобы отправка продолжалась, даже если JavaScript отключен в клиентском браузере (означает отсутствие проверки, но отправит), тогда

<input type="button" name="commit"
value="Save"
onclick="validate_activity(myform);return false;" />

Надеюсь, никакая проверка не поразит вас. Но тогда javascript - это только клиентская часть, и я надеюсь, что у вас все равно будут серьезные проверки работоспособности на стороне сервера, и многие, я думаю, люди используют его для очень простых проверок на местах.

2 голосов
/ 26 декабря 2011

Если вы выполняете проверку формы, а затем проверяете ее на событии onclick кнопки, то, как вы пытаетесь, не имеет смысла лучше использовать его на <form></form> onsumbmit событии, подобном этому.

<form action="someURL" method="post" onsubmit="return validate_activity();">

</form>
2 голосов
/ 26 декабря 2011

Полагаю, проблема в onclick="return validate_activity();", этот оператор return выполняется при нажатии кнопки подтверждения (не возвращает false). Правильный путь - onclick="validate_activity();" и возврат false в функцию validata_activity, которая остановит действие отправки по умолчанию.

1 голос
/ 26 декабря 2011

Вы должны использовать submit событие формы для проверки.

<form action="..." method="..." onsubmit="return validate_activity()">
    <...>
    <input class="create_button" name="commit" type="submit" value="Save" />
    <...>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...