Laravel 5 如何在提交表单时仅执行javascript onClick而不执行PHP操作

Laravel 5 如何在提交表单时仅执行javascript onClick而不执行PHP操作,laravel-5,Laravel 5,我通过laravel制作了一个表单,其中我只希望接受未来的日期。我通过javascript验证日期,并在输入过去日期时弹出一个警报,但问题是,在发出警报后,即使输入了过去日期,它也会形成动作url(表单已提交)。我希望它保留在那一页上。请帮忙 <html> <script type="text/javascript"> function func() { var aa = document.getElementById('in').value; var bb=ne

我通过laravel制作了一个表单,其中我只希望接受未来的日期。我通过javascript验证日期,并在输入过去日期时弹出一个警报,但问题是,在发出警报后,即使输入了过去日期,它也会形成动作url(表单已提交)。我希望它保留在那一页上。请帮忙

<html>
<script type="text/javascript">
function func() {
  var aa = document.getElementById('in').value;
  var bb=new Date();
  var y=aa.slice(0,4);
  var m=aa.slice(5,7);
  var d=aa.slice(8,10);
  if((y>=bb.getFullYear() && m>=(bb.getMonth()+1) && d>=bb.getDate())!=1) {
    alert('Enter future date');
  }
}
</script>

<body>
  <form action="/submitted" method="post">
  <input id="in" type="date" name="sdate">
  <input type="submit" onClick="func()"></form>
</body>
</html>

函数func(){
var aa=document.getElementById('in').value;
var bb=新日期();
变量y=aa.切片(0,4);
var m=aa.切片(5,7);
var d=aa.切片(8,10);
如果((y>=bb.getFullYear()&&m>=(bb.getMonth()+1)和&d>=bb.getDate())!=1){
警报(“输入未来日期”);
}
}
在“alert();”命令之后使用“return false;”


使用ajax发送数据,如下所示:

function func() {
  var aa = document.getElementById('in').value;
  var bb = new Date();
  var y = aa.slice(0, 4);
  var m = aa.slice(5, 7);
  var d = aa.slice(8, 10);
  if ((y >= bb.getFullYear() && m >= (bb.getMonth() + 1) && d >= bb.getDate()) != 1) {
    alert('Enter future date');
  } else {
    var dataString = {
      'date': aa
    };
    $.ajaxSetup({
      headers: {
        'X-CSRF-Token': $('meta[name=_token]').attr('content')
      }
    });
    $.ajax({
      url: "dateroute",
      type: "post",
      data: dataString,
      success: function(data) {
        alert('Good job!');
      }
    });
  }
}
namespace App\Http\Controllers;
use Request;
use Input;
class DateController extends Controller {

    public function dateroute() {
        if (Request::ajax()) {
            $data = Input::all();
            //here are all datas from ajax datastring
        }
    }
}
在routes.php中,必须添加“dateroute”:

Route::post('dateroute', array('as' => 'dateroute', 'uses' => 'DateController@dateroute'));
您的DateController.php如下所示:

function func() {
  var aa = document.getElementById('in').value;
  var bb = new Date();
  var y = aa.slice(0, 4);
  var m = aa.slice(5, 7);
  var d = aa.slice(8, 10);
  if ((y >= bb.getFullYear() && m >= (bb.getMonth() + 1) && d >= bb.getDate()) != 1) {
    alert('Enter future date');
  } else {
    var dataString = {
      'date': aa
    };
    $.ajaxSetup({
      headers: {
        'X-CSRF-Token': $('meta[name=_token]').attr('content')
      }
    });
    $.ajax({
      url: "dateroute",
      type: "post",
      data: dataString,
      success: function(data) {
        alert('Good job!');
      }
    });
  }
}
namespace App\Http\Controllers;
use Request;
use Input;
class DateController extends Controller {

    public function dateroute() {
        if (Request::ajax()) {
            $data = Input::all();
            //here are all datas from ajax datastring
        }
    }
}

请你发一个问题代码片段好吗?@itsayushbansal请把这个答案标记为正确答案。然后其他人会得到正确的答案。