表格提交

时间:2011-04-04 05:55:41

标签: javascript jquery forms submit

在此函数中,根据输入的值,表单提交为true / false。为什么在这个函数中没有返回true?

基本上,我的if句子在表格输入中测试问号。如果有,那么我不希望表单提交到search.php。如果没有问号,那么是else语句,那么我希望表单提交给search.php。我尝试使用return true;使.form1提交,但它不起作用。然后我尝试了$('。form1')。submit(),但这使得它在输入被按下之前提交。

                <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 个答案:

答案 0 :(得分:1)

为什么不在提交时检查问号?

而不是不断更改表单的提交处理程序
$('.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 :(得分:0)

$('.form1').submit(function () {
    return true;
});

这会将只返回true的函数绑定到submit事件。即在此之后,当您提交表单时,该函数将返回true。就是这样。

这是manual entry

  

.submit( handler(eventObject) )
   handler(eventObject) 每次触发事件时执行的功能。


如果您只想提交表单,请使用$('.form1').submit()。如果您不想提交表单,请不要致电.submit()。即:

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

答案 2 :(得分:0)

使用submit而不使用任何参数:$('.form').submit()

答案 3 :(得分:0)

我认为您希望在askInput条目无效时阻止表单提交。

将提交处理程序绑定到表单时,它始终是附加的,因此每次运行keyUp处理程序时,都会向表单添加一个额外的提交处理程序。其中一个必然会“返回false”,阻止表单提交。

相反,可能会禁用提交按钮或向表单添加“无效”类,并添加单个表单提交处理程序,以确保表单没有无效的类。

e.g:

<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

答案 4 :(得分:0)

尝试。

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

答案 5 :(得分:0)

Blender试图告诉你的是什么(在所有jQuery魔法中,如果你喜欢那种东西)是为表单的提交事件添加一个监听器来查看输入并返回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>