2010-01-14 3 views
0

editvalidate() функция не вызывался на всех:Проблема в форме проверки с JavaScript

Пожалуйста, укажите, почему. Какое средство?

<script type="text/javascript"> 

function editvalidate() { 
    var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/; 
    var numericExpression = /^[0-9]+$/; 


    if(document.editprofile.userid.value == '' || document.editprofile.password.value == ''||document.editprofile.name.value == ''||document.editprofile.age.value == ''||document.editprofile.collegeid.value == ''||document.editprofile.mobile.value == ''||document.editprofile.address.value == ''||document.editprofile.department.value == ''||document.editprofile.email.value == ''||document.editprofile.sec_ques.value == ''||document.editprofile.answer.value == ''){ 
     alert("Hey! you can't left a field blank!"); 
     return false; 
    } 
    else if(!document.editprofile.email.value.match(emailExp)){ 
    alert("You need to enter a valid email address to get proper notifications!"); 
     return false; 

    } else if(!document.editprofile.mobile.value.match(numericExpression)){ 
    alert("Mobile numbers are all numeric digits i think!"); 
     return false; 

    } else if(document.editprofile.mobile.value.length < 10){ 
    alert("Mobile number must be 10 digit long!"); 
     return false; 

    } 


    else{ 
     return true; 
    } 

} 






</script> 

форма приводится ниже, и его использовали для извлечения данных из базы данных и сама getfilled с values.the редактируемые данные корректируются и форма submitted.its работает нормально только не получает подтверждено CZ в editvalidate() вообще не звонит.

<form name="editprofile" action="editprofile.jsp" method="post" onsubmit="return editvalidate();"> 

<table align="center"> 
<% 
    for(int i = 0; i < list.length ; i++){ 
%> 
<tr> 
    <td>Name:</td> 
    <td><input type="text" name="name" size="35" style="width: 219px" value="<%=list[i].getName() %>" maxlength="25"></td> 
</tr> 
<input type="hidden" name="userid" size="20" style="width: 220px" 
    value="<%=list[i].getUserid() %>" maxlength="10"> 
<tr> 
    <td>Address:</td> 
    <td><input type="text" name="address" size="46" 
    style="width: 221px" value="<%=list[i].getAddress() %>" 
    maxlength="50"></td> 
</tr> 
<tr> 
    <td>E-mail:</td> 
    <td><input type="text" name="email" size="20" 
    style="width: 220px" value="<%=list[i].getEmail() %>" maxlength="40"></td> 
</tr> 
<tr> 
    <td>Age:</td> 
    <td><input type="text" name="age" size="20" style="width: 219px" 
    value="<%=list[i].getAge() %>" maxlength="2"></td> 
</tr> 
<tr> 
    <td>College ID:</td> 
    <td><input type="text" name="collegeid" size="20" 
    style="width: 219px" value="<%=list[i].getCollegeid() %>" 
    maxlength="10"></td> 
</tr> 
<tr> 
    <td>Mobile:</td> 
    <td><input type="text" name="mobile" size="20" 
    style="width: 218px" value="<%=list[i].getMobile() %>" maxlength="10"></td> 
</tr> 
<tr> 
    <td>Department:</td> 
    <td><input type="text" name="department" size="20" 
    style="width: 218px" value="<%=list[i].getDepartment() %>" 
    maxlength="10"></td> 
</tr> 
<tr> 
    <td>Security Question:</td> 
    <td><input type="text" name="sec_ques" size="20" 
    style="width: 218px" value="<%=list[i].getSec_ques() %>" 
    maxlength="50"></td> 
</tr> 
<tr> 
    <td>Answer:</td> 
    <td><input type="text" name="answer" size="20" 
    style="width: 218px" value="<%=list[i].getAnswer() %>" maxlength="50"></td> 
</tr> 

<tr> 
    <td><input type="submit" name="operation" value="editprofile" 
    style="width: 118px"></td> 
    <td><input type="reset" value="Reset" name="B2"></td> 
</tr> 

<% 
    } 
%> 

я проверил это так, как у предложенного и обнаружили, что функция получает called.but почему оповещения остальные г нт видно? разве thatdue атрибуту значение во входных тегов

ответ

0

Фактически я использовал параметр проверки пароля в первом, если блок document.editprofile.password.value == ''

и я никогда не использовал атрибут как пароль в форме. Это была моя ошибка, и поэтому он не работал. Я нашел его с помощью инструмента firebug tool.thanks для справки.

+0

Таким образом, Firebug действительно помог решить проблему. Таким образом, ваша функция была ** фактически вызвана **, но это просто обычная ошибка на некоторой строке. Почему мой ответ тогда не был принят? Могу ли я помочь, чтобы вы опубликовали * плохой вопрос? В любом случае, я буду думать в будущем один или два раза в будущем, прежде чем помогать людям, которые ставят такие плохие вопросы, как вы:/Пожалуйста, прочтите следующее: http://catb.org/esr/faqs/smart-questions.html – BalusC

0

вы не называете его в любом месте от вашего HTML, вы, вероятно, следует назвать его <form onsubmit="return editvalidate();">

Хорошо, теперь я вижу, что он отформатирован это правильно, я не против вниз голосов я иногда даю им.

@Robin Agrahari

вы, вероятно, где-то опечатка в JavaScript никто не собирается идти trought, но вы, попытайтесь проверить один за другим, если с помощью предупреждения, как и вы. Но не делайте этого на sumbit, создайте кнопку mock, которая будет вызывать (при нажатии) эту функцию editvalidate(); и тщательно проверьте свою функциональность, и в конце концов вы столкнетесь с проблемой.

+0

Это именно то, что он * * делает. –

+1

@ c0mrade, я знаю, когда вы публикуете это, вы не можете видеть html-теги, потому что OP не форматирует его правильно, но похоже, что OP сделал это точно, поэтому, чтобы предотвратить получение большего количества downvotes, я предлагаю вам удалить это или опубликовать другие идеи , Я didnt downvote вы btw, спасибо. – YOU

1

С предоставленной небольшой информацией все, на что я могу ответить, это просто запустить отладчик Javascript. Я могу порекомендовать вам Firebug.

Это, в будущем, пожалуйста, придумайте SSCCE вместо вырезок кода с ненужным беспорядком. Это позволяет избежать сканирования в коде, ищущем строки релевантности, и на первый взгляд очевидные вопросы: «Являются ли они в одном файле?», «Вы добавили alert('blah') в качестве первой строки функции, чтобы увидеть, действительно ли она вызвана?», У браузера есть JS? »,« Вы уверены, что вы не опечатали имя функции? »,« Не есть ли в коде, который мог бы его нарушить? »И т. Д.

Вот простой пример такого SSCCE:

<!doctype html> 
<html lang="en"> 
    <head> 
     <title>SO question 2063598</title> 
     <script> 
      function validate(form) { 
       alert('Validate method invoked!'); 
       return false; 
      } 
     </script> 
    </head> 
    <body> 
     <form onsubmit="return validate(this)"> 
      <input type="text" name="foo" class="required"> 
      <input type="submit"> 
     </form> 
    </body> 
</html> 

Тем не менее, я вижу, что вы все еще используете устаревшую скриптлетов в вашем JSP. Если вы можете, я решила отказаться от его использования и переключиться на taglibs/EL, пока не стало слишком поздно. Необработанный код Java относится к Java-классам, а не к JSP-файлам.

Базовый пример с JSTL-х (только падение jstl-1.2.jar в /WEB-INF) c:forEach:

<table> 
    <c:forEach items="${users}" var="user"> 
     <tr> 
      <td><input type="text" name="address" value="${user.address}"></td> 
      <td><input type="text" name="email" value="${user.email}"></td> 
      <td><input type="text" name="college" value="${user.college}"></td> 
     </tr> 
    </c:forEach> 
</table> 

А также сохранить CSS в отдельном файле CSS, чтобы отделить стиль от содержания и повышения производительности WebAPP и ремонтопригодность.

0

Как вы можете сказать, что это не называется? Я бы поставил предупреждение в верхней части метода и посмотрел, попадает ли он в это.Возможно, вы где-то нанесете какую-то ошибку. Если не происходит оповещения в верхней части editvalidate, попробуйте изменить obsubmit к: «Здравствуйте!»

onsubmit="alert('hello!'); return editvalidate();" 

, то вы должны, по крайней мере, см когда вы нажмете кнопку «Отправить».

+0

Я проверил его так, как предположил и нашел, что функция получает вызов. Но почему остальные оповещения r nt видны? isnt thatdue к атрибуту value во входных тегах –

+0

Не уверен, но вы должны быть в состоянии легко понять это, разместив некоторые предупреждения во всей остальной части функции или, как упоминалось выше, вы используете отладчик JS, например Firebug. – Bialecki

0

глядя на код, он должен быть назван

Или попробуйте

onsubmit="editvalidate(); return false;"

Или проверить, где она не неуместны, я имею в виду Javascript должен быть в < голове > </голова >

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