Проблема с формой отправить JQuery AJAX - PullRequest
0 голосов
/ 31 мая 2011

У меня есть такой код.

<html>
<head>
<title>Captcha With Refresh Feature</title>
<script src="jquery.js" type="text/javascript"></script>
<script type="text/javascript">

function check1(){ 
var search_val=$("#security_code").val(); 
if(search_val == ''){
alert("Please enter code");
return false;
}else{
$.ajax({
type: "POST",
url: "find.php",
data: "search_term="+search_val,
success: function(msg){

 if(msg == 'failure'){
 document.myform.submit();
 }else{
 alert("Please enter correct code");
 return false;
 }
 }
 });
 }
 return false;
}  
}
</script>
</head>
<body onLoad="new_captcha();">
<form action="check.php" method="post" name="myform" id="myform" onSubmit="return     check1()">
<table>
<tr>
<td>&nbsp;</td>
<td><img border="0" id="captcha" src="image.php" alt="">
&nbsp;<a href="JavaScript: new_captcha();"><img border="0" alt="" src="refresh.png"     align="bottom"></a></td></tr>
<tr><td>Name</td><td><input type="text" name="u_name" id="u_name" /></td></tr>
<tr>
<td>Security Code:</td>
<td><input type="text" name="security_code" id="security_code">
 &nbsp;</td><td><input type="submit" name="submit" value="Check"></td>&nbsp;<td><label id="security_code_error"></label><label id="security_code_error1"></label></td></tr>         </table>
</form>
 </body>
</html>

Мой ответ ajax будет либо успешным, либо неудачным. Я могу предупредить и проверить мой ответ ajax. Теперь у меня проблема с отправкой формы.

Я получаю эту ошибку ниже: document.myform.submit не является функцией

Как заставить или отправить форму, если ответ успешен. Не могли бы вы помочь мне в этом.

Спасибо - Haan

Ответы [ 6 ]

2 голосов
/ 31 мая 2011

У вас есть вход с именем submit.Это приводит к тому, что функция, изначально имеющая значение theForm.submit, будет заменена ссылкой на этот HTMLElementNode.

Переименуйте вход.

(или взломайте его с помощью document.createElement('form').submit.call(theForm);)

1 голос
/ 31 мая 2011

Это будет намного проще, если вы используете jQuery для выполнения привязки, а не для встроенного вызова JS:

$('#myForm').submit(function() {
    var search_val = $("#security_code").val(),
        form = this;

    e.preventDefault();

    if (search_val == '') {
        alert("Please enter code");
    } else {
        $.ajax({
            type: "POST",
            url: "find.php",
            data: "search_term=" + search_val,
            success: function (msg) {
                if (msg == 'failure') {
                    form.submit();
                } else {
                    alert("Please enter correct code");
                }
            }
        });
    }
});

Учитывая все вышесказанное, главная проблема - name="submit". Вы не должны давать имена элементов формы, которые переопределяют методы или свойства форм, например submit, method, action. Свойство / метод по умолчанию будет скрыто. От Документы MDC

Если элемент управления формы (например, кнопка отправки) имеет имя или идентификатор отправки, он будет маскировать метод отправки формы.

1 голос
/ 31 мая 2011

document.myform.submit находит элемент управления с именем «submit» в форме, называемой «myform». Переименуйте вашу кнопку и посмотрите, вернется ли стандартная функция submit ().

0 голосов
/ 31 мая 2011

Вы можете использовать jQuery для запуска отправки формы следующим образом:

$ ("# myform"). Submit ();

0 голосов
/ 31 мая 2011

Как я вижу, вы используете Jquery, поэтому $("#myfom").submit() должно работать.

0 голосов
/ 31 мая 2011

Вы можете сделать что-то подобное.

$('#myform').submit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...