2014-01-28 5 views
3

я действительно ломал мои несколько клеток мозга на этом одно- кажется достаточно простым, но я не могу заставить его работы-Javascript/JQuery, если операторы не работают

$(function() { 
    function check() { 
     var myname = $("#myname").val(); 
     var myemail = $("#myemail").val(); 
     var password = $("#password").val(); 
     var repeatpassword = $("#repeatpassword").val(); 

     if (myname == "") { 
      $("#mynameresult").append("Please Enter Your Name"); 
      return false; 
     } 
     if (myemail =="") { 
      $("#myemailresult").append("Please Enter Your Email"); 
      return false; 
     } 
     if (password == "") { 
      $("#passwordresult").append("Please Enter a Password"); 
      return false; 
     } 
     if (repeatpassword == "") { 
      $("#repeatpasswordresult").append("Please Repeat the Password"); 
      return false; 
     } 
     return true; 
    } 
}); 

Моя форма выглядит например,

<table class="registrationform"> 

    <form method="post" onsubmit = "return check();" action="/ToDoneList/ToDoneList/usr/registrationparse.php" enctype="multipart/form-data" > 

    <tr><td>Username: </td><td><input class="focusfox" type="text" name="username" id="myname"></td><td id="mynameresult"></td></tr> 
    <tr><td>Email: </td><td><input type="text" name="email" id="myemail"></td><td id="myemailresult"></td></tr> 
    <tr><td>Password: </td><td><input type="password" name="password" id="password" /></td><td id="passwordresult"></td></tr> 
    <tr><td>Repeat the Password: </td><td><input type="password" name="repeatpassword" id="repeatpassword"/></td><td id="repeatpasswordresult"></td></tr>   
    <tr><td rowspan="2"><img id="captcha" src="/securimage/securimage_show.php" alt="CAPTCHA Image" /></td><td><input type="text" name="captcha_code" maxlength="6" title="Enter What you see on the Left If you are having trouble click the New Image Button"/></td></tr> 
    <tr><td><button type="button "onclick=\'document.getElementById("captcha").src = "/securimage/securimage_show.php?" + Math.random(); return false\'>New Image</button></td> 
    <tr><td class="regbutton" colspan="2"><input type="submit" value="Register" ></td></tr> 

    </form> 
</table> 

Проблема в том, что эта функция не будет ловить, когда я отправлю форму пустым пространством. Я думаю, что это должно быть проблемой с моими операциями if, потому что, когда я снимаю ее и сохраняю значения для переменных и добавляю эти значения к переменным, когда return является ложным за пределами оператора if, он не останавливает его от отправки.

В любом случае, есть ли что-нибудь, что вы видите, что здесь неправильно? Заранее спасибо за помощь!

+0

Ваш HTML недопустим - вы не можете поместить '

' внутри '' как это. Также всегда открывайте консоль разработчика браузера; вы получаете ошибку в настоящее время. – Pointy

+1

Это должно быть наоборот: поместите таблицу в форму. – Barmar

+0

Почему вы думаете, что это проблема с операторами 'if'? Вы не ошиблись в консоли Javascript, говоря, что функция 'check' не определена? – Barmar

ответ

7

Вы определяете свою функцию «проверки» внутри «готового» обратного вызова. Поэтому он не является глобальным, поэтому вы не можете его вызывать из обработчика «отправить».

Приложить обработчик представить с помощью JQuery вместо:

$('form').submit(check); 

Положи в конце (внутри) "готовый" обработчик.

+0

Отлично! который зафиксировал это. Если бы я определил его вне готового обратного вызова, тогда он будет считаться глобальным? Что-то не так с этим, если функция не будет называться до тех пор, пока страница не будет загружена? – Jimbo

+0

Нет ничего страшного в том, чтобы держать вещи в «готовом» обработчике, а прикрепление обработчиков событий через jQuery является более чистым и более гибким в любом случае. Современная передовая практика заключается в том, чтобы держать HTML без каких-либо JavaScript вообще. – Pointy

1

положил функцию check() за пределы блока $ (function() {}) !!

+0

Да, это тоже работает :) – Pointy

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