отправка формы - PullRequest
       8

отправка формы

0 голосов
/ 04 апреля 2011

В этой функции, основываясь на значении ввода, форма отправки имеет значение true / false. Почему в этой функции не возвращается значение true?

По сути, мое предложение if проверяет вопросительный знак в форме ввода. Если он есть, я не хочу отправлять форму в search.php. Если вопросительного знака нет, остальное предложение, тогда я хочу отправить форму в search.php. Я пытался использовать return true; сделать .form1 представить, но это не сработало. Затем я попытался $ ('. Form1'). Submit (), но это заставило его отправить, прежде чем нажать Enter.

                <script>

            $(".askInput").keyup(function() {

                if ($(this).val().indexOf("?") != -1) {

                    $(this).css({"color" : "#00bfff", 'border-top-right-radius' : '0px', 'border-bottom-right-radius' : '0px', '-moz-border-top-right-radius' : '0px', '-moz-border-bottom-right-radius' : '0px', '-webkit-border-top-right-radius' : '0px', '-webkit-border-bottom-right-radius' : '0px'});

                    $('.searchEnter').stop().animate({
                    marginLeft: "310px"
                    }, 200 );
                    $('.form1').submit(function () {
                         return false;
                        });


                } else {

                    $(this).css({"color" : "#333", 'border-top-right-radius' : '5px', 'border-bottom-right-radius' : '5px', '-moz-border-top-right-radius' : '5px', '-moz-border-bottom-right-radius' : '5px', '-webkit-border-top-right-radius' : '5px', '-webkit-border-bottom-right-radius' : '5px'});

                    $('.searchEnter').stop().animate({
                        marginLeft: "250px"
                        }, 200 );
                    $('.form1').submit(function () {
                         return true;
                        });

                }
            });

            </script>

Ответы [ 6 ]

1 голос
/ 04 апреля 2011

Вместо постоянного изменения обработчика отправки формы, почему бы не проверить вопросительный знак при отправке?

$('.form1').submit(function () {
  if ($('.askInput').val().indexOf("?") != -1) return false;
});

$(".askInput").keyup(function () {

  if ($(this).val().indexOf("?") != -1) {

    $(this).css({
      "color": "#00bfff",
      'border-top-right-radius': '0px',
      'border-bottom-right-radius': '0px',
      '-moz-border-top-right-radius': '0px',
      '-moz-border-bottom-right-radius': '0px',
      '-webkit-border-top-right-radius': '0px',
      '-webkit-border-bottom-right-radius': '0px'
    });

    $('.searchEnter').stop().animate({
      marginLeft: "310px"
    }, 200);
  } else {

    $(this).css({
      "color": "#333",
      'border-top-right-radius': '5px',
      'border-bottom-right-radius': '5px',
      '-moz-border-top-right-radius': '5px',
      '-moz-border-bottom-right-radius': '5px',
      '-webkit-border-top-right-radius': '5px',
      '-webkit-border-bottom-right-radius': '5px'
    });

    $('.searchEnter').stop().animate({
      marginLeft: "250px"
    }, 200);
  }
});
1 голос
/ 04 апреля 2011

Try.

$('.form1').submit(function (e) {
  if ($('.askInput').val().indexOf("?") != -1) {
    e.preventDefault();
  }
  $(this).submit();
});
0 голосов
/ 04 апреля 2011

То, что Blender пытался вам сказать (среди всего этого jQuery wizardry, если вам нравится такая вещь), это добавить прослушиватель для события отправки формы, который просматривает входные данные и возвращает false, если есть?там.Проще говоря, термины POJS:

<form onsubmit="return validateInput(this);">
  <input name="foo" value="?">
  <input type="submit">
</form>

<script type="text/javascript">
  function validateInput(form) {

    if (/\?/.test(form.foo.value)) {
      // value has a ?, ask user to fix it
      alert('Get rid of ? knucklehead!!');

      // cancel submit
      return false;
    }
  }
</script>
0 голосов
/ 04 апреля 2011

Я думаю, что вы хотите предотвратить отправку формы, когда запись askInput недействительна.

Когда вы связываете обработчик отправки с формой, он всегда присоединяется, поэтому каждый раз, когда запускается ваш обработчик keyUp, вы добавляетедополнительный обработчик отправки в форму.Один из них связан с «возвратом ложного», что препятствует отправке формы.

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

например:

<form>
  <input name="ask" /> <input type="submit" />
</form>
<script>
$('form').submit(function(e) {
  if ($(this).hasClass('invalid')) {
    e.preventDefault();
  }
});
$('input[name="ask"]').keyup(function(e) {
  if ($(this).val().indexOf("?") != -1) {
    // ...

    $(this.form).addClass('invalid');
    // or
    $(':submit', this.form).attr('disabled', 'disabled');
  } else {
    // ...

    $(this.form).removeClass('invalid');
    // or
    $(':submit', this.form).removeAttr('disabled');
  }
});
</script>

В качестве альтернативы используйте проверенную в бою библиотеку проверки jQuery, например jQuery ketchup .

0 голосов
/ 04 апреля 2011

использовать submit без параметров: $('.form').submit()

0 голосов
/ 04 апреля 2011
$('.form1').submit(function () {
    return true;
});

Это связывает функцию, которая просто возвращает true к событию submit. То есть после этого при отправке формы функция вернет true. И это все.

Вот ручная запись :

.submit( handler(eventObject) )
handler(eventObject) Функция, выполняемая при каждом запуске события.


Если вы просто хотите отправить форму, используйте $('.form1').submit(). Если вы не хотите отправлять форму, не звоните .submit(). I.e.:

if (...) {
    ...
    // don't call submit
} else {
    ...
    $('.form1').submit();
}
...