У меня есть форма Django, которая должна выполнить некоторую проверку на стороне клиента перед отправкой формы. Это код в шаблоне:Django form submit button onclick не вызывает функцию JavaScript
<form action="/{{ blog_entry.id }}/addComment/" method="post">
{{ commentForm.name.label_tag }}
{{ commentForm.name }}
<span id="spanNameReq" style="color:Red; display:none;">Required</span>
<br />
{{ commentForm.email.label_tag }}
{{ commentForm.email }}
<span id="spanEmailReq" style="color:Red; display:none;">Required</span>
<span id="spanEmailInvalid" style="color:Red; display:none;">Invalid e-mail address</span>
<br />
{{ commentForm.website.label_tag }}
{{ commentForm.website }}
<span id="spanWebsiteInvalid" style="color:Red; display:none;">Invalid URL</span>
<br />
{{ commentForm.comment.label_tag }}
<span id="spanCommentReq" style="color:Red; display:none;">Required</span>
<br />
{{ commentForm.comment }}
<br />
<input type="submit" value="Add comment" onclick="javascript:var ret = validateComment(); return ret;" />
</form>
Но проблема в том, что validateComment не дозвонились вообще, и форма получает представлен сразу. Как ни странно, если я заменю событие OnClick с
javascript:alert('test');
или
javascript:return false;
, что JS код запускается на выполнение прекрасно (и во втором случае она не будет представлять форму).
Почему он не выполняет указанную функцию? Просто, чтобы подтвердить, что я включил файл сценария в голову HTML (включая JS-код, встроенный в шаблон, не имеет значения), и если я не использую Django-форму, а обычную HTML-форму, она отлично работает ,
Я не могу сказать, почему это не работает, но вы должны рассмотреть возможность использования события onsubmit формы, а не 'onclick' на кнопке submit. Таким образом, он будет работать, если вы нажмете enter, чтобы отправить форму, как только вы ее заработаете. – nlogax
@nlogax: да, я понял, что, когда joeformd опубликовал подобное предложение ниже. К сожалению, это еще не решило мою проблему ... –