Я занимаюсь разработкой веб-приложения с использованием Python и CGI.Для проверки формы я намерен использовать JavaScript.Вот сценарий. Здесь есть текстовое поле, в котором пользователь вводит название проекта и нажимает кнопку «Отправить».Я хочу отловить, если в текстовое поле ничего не введено, и выдать предупреждение.
Для функции JavaScript я использовал параметры, project_form (для формы) и project_name для текстового поля.Но я не совсем понимаю, где поставить эту функцию.На данный момент я пытаюсь поместить его в сам тег формы.Но это не работает.Я почему-то думаю, что мне нужно передать параметры project_form и project_name в функцию, и из-за структуры кода я не могу поместить функцию в раздел «head».Я вставляю свой код здесь.Спасибо за помощь.
<form action="create_project.py" method="POST" name="project_form">
<input type="text" name="project_name" size="40" onclick="javascript:document.project_form.submit.disabled=false"
id="acpro_inp0">
<br>
<script type="text/javascript">
function ValidateTextbox(project_form, project_name) {
var tb_value = project_form.project_name.value;
if (tb_value == null || tb_value.trim() == "") {
alert("Please enter something");
project_form.project_name.focus();
return false;
}
return true;
}
</script>
return ValidateTextbox('project_form','project_name')
<p>
</p>
<input type="submit" name="submit" value="Submit" onsubmit="return ValidateTextbox('project_form','project_name')"
disabled="">
</form>
Вот соответствующий код Python -
import yate
import jshelper
print yate.start_response()
print yate.include_header("Create a new project.")
#Section to create a new project
print yate.start_form("create_project.py","project_form")
print yate.text_box("project_name",form_name="project_form")
jshelper.JSTextBoxValidate("project_form","project_name")
print yate.end_form("Submit",is_disabled = 'True', onsubmit_callback = "return ValidateTextbox('project_form','project_name')")
print yate.include_footer(({"Home": "../index.html"}))
Вот еще один фрагмент кода Python, где я пытаюсь создать функцию JS на лету.
def JSTextBoxValidate(form_name,tb_name):
print '<script type="text/javascript">'
print 'function ValidateTextbox' + '(' + form_name + ',' + tb_name + ')'
print '{'
print 'var tb_value = ' + form_name + '.' + tb_name + '.' + 'value;'
print 'if (tb_value==null || tb_value.trim()=="")'
print '{'
print 'alert("Please enter something");'
print form_name + '.' + tb_name + '.' + 'focus();'
print 'return false;'
print '}'
print 'return true;'
print '}'
print '</script>'
Почему-то у меня такое чувство, что я, вероятно, не на правильном пути в этом процессе, и должен быть лучший путь.Так что я буду благодарен за то, что помог мне заставить эту штуку работать.Примечание. Пакет yate взят из Head First Python, и я использую и расширяю шаблон из этого кода.Я поместил подобное примечание в документацию моего проекта.Это мой личный проект.