【问题标题】:how to show error in jquery after clicking submit button单击提交按钮后如何在jquery中显示错误
【发布时间】:2016-02-18 14:56:41
【问题描述】:

我的问题是,点击提交按钮后,页面会以任何方式转到 php 文件,我的 html 代码是这样的

<form action="register.php" method="post">
    <input type="text" name="name" id="name"><div id="adiv"></div>
    <input type="submit" value="submit" id="button">
</form>

我的 jquery 代码是这样的

$('#name').focusout(function(){
    if($('#name').val().length==0){ 
        $('#adiv').html("please enter name")
    }
});
$('#button').click(function(){
    if($('#name').val().length==0){
        $('#adiv').html("please enter your name")
    }
});

但点击提交按钮后,它会重定向到 php 文件并且不显示任何错误并将空白数据存储在数据库中。

【问题讨论】:

  • 您可以使用 Javascript 进行验证,但您也应该始终在服务器端验证输入。 (在您的情况下使用 PHP。)人们可以简单地禁用 Javascript 并仍然发送无效数据。
  • 也请看this post

标签: php jquery html forms


【解决方案1】:
$('your-form').on('submit', function(e) { 
e.preventDefault(); 
//your code bere
});

preventDefault 停止浏览器的正常提交行为,以便您可以触发任何您想要的事件

【讨论】:

  • 那么表单永远不会提交,除非我们在代码中再次提交,那么提交按钮有什么用
  • 在您检查的代码中是否有任何错误。如果是,您不必提交,只需显示错误即可。如果没有,您可以像这样发送 ajax 请求或再次触发提交: $('your-form').submit()..... 或者做任何你想做的事情
【解决方案2】:

试试这个..:D

function validateFunction(){
    if(document.getElementByID('name').value.length==0){
        document.getElementByID('adiv').innerHTML = "please enter your name";
        return false;
    }
    return true;
}
&lt;input type="submit" value="submit" id="button" onclick="return validateFunction();" /&gt;

【讨论】:

  • 1:不要添加内联事件处理程序——尤其是如果你有 jQuery。 2:不要将验证分配给提交按钮
  • 这段代码不起作用??我可以得到这个否决票的具体原因..拜托。抱歉,我已将代码更改为 javascript。
  • 仍然不要内联事件处理程序,也不要使用提交按钮的点击处理程序。如果您打算稍后执行提交,也永远不要在name="submit" 中调用任何内容。它将覆盖表单的事件处理程序
  • oops.. 对不起这个名字,我在考虑 value="submit",但输入了名字。真的很抱歉
  • 没问题。我已经看过数百次了,人们无法理解为什么他们不能提交
【解决方案3】:

请检查一下

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="post">
  <input type="text" name="name" id="name">
  <div id="adiv"></div>
  <input type="button" value="submit" id="button">
</form>

<script>
$(document).ready(function(){
$('#button').on('click',function(){

if($('#name').val() == ''){
$('#adiv').text("Please enter name!!");
}else{

    $('#adiv').text($('#name').val());
}

})

})

</script>

【讨论】:

    【解决方案4】:

    我强烈建议不要将验证分配给提交按钮单击。 而是分配表单的提交事件处理程序。 我还添加了 trim 并从代码中删除了错误的内容。

    $(function() {
      $('#name').focusout(function() {
        var empty = $.trim($('#name').val()).length == 0;
        $('#adiv').toggle(empty);
      });
      $('#form1').on("submit",function(e) {
        $('#name').focusout();
        if ($('#adiv').is(":visible")) {
            e.preventDefault()
        }
      });
    });
    #adiv { display:none }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <form action="register.php" method="post" id="form1">
      <input type="text" name="name" id="name">
      <div id="adiv">please enter name</div><br/>
      <input type="submit" value="submit" id="button">
    </form>

    【讨论】:

      【解决方案5】:

      您需要在检测到错误后停止代码执行。例如,您可以简单地使用return falsereturn

      $('#name').focusout(function() {
        if ($('#name').val().length == 0) {
          $('#adiv').html("please enter name")
        }
      });
      $('#button').click(function() {
        if ($('#name').val().length == 0) {
          $('#adiv').html("please enter your name")
          return false;//add this
        }
      });
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <form action="register.php" method="post">
        <input type="text" name="name" id="name">
        <div id="adiv"></div>
        <input type="submit" value="submit" id="button">
      </form>

      【讨论】:

        【解决方案6】:

        因为您的input type is submit 您可以change the type to button 或添加event.preventDefault() 以避免自动传递表单

        使用event.preventDefault()

        $('#button').click(function(e) {
            e.preventDefault();//this will stop form auto submit thus showing your error
            if ($('#name').val().length == 0) {
                $('#adiv').html("please enter your name")
            }
        });
        

        或者

        <input type="submit" value="submit" id="button">
        

        改成

        <input type="button" value="submit" id="button">//also prevent form auto submit thus will show the error
        

        【讨论】:

        • 请使用提交事件而不是点击事件
        • @mplungjan 我只是展示了e.preventDefault() 的使用,这就是我使用点击的原因。
        • 查看我对提交用户的回答
        • 我不建议使用按钮的单击处理程序来验证表单。而是使用表单的提交处理程序。这就是它的目的。如果您希望表单完全提交,请将 preventDefault 放在错误所在的位置
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-28
        • 2016-01-21
        • 1970-01-01
        相关资源
        最近更新 更多