如果输入无效,如何停止功能?

How to stop function if input is invalid?

我正在尝试获取多个 URL 输入的值,如果 URL 的值无效,我只想为输入元素设置动画并停止一切。

有什么办法吗?

$('button').click(function(e){
  var linkarr = [];
  var $input = $('.default');
  var isValidUrl = /[0-9a-z_-]+\.[0-9a-z_-][0-9a-z]/; // URLvalid check

  $input.each(function() {
    var inputVal = $(this).val();
    if(!isValidUrl.test(inputVal)) {
      $(this).parent().animateCss('shake');
   // if input is not valid, I want to stop the code here.
    }
    if(inputVal) linkarr.push(inputVal);
  });

  e.preventDefault();
  $.ajax({
    url: '/api/compress',
    type: 'POST',
    dataType: 'JSON',
    data: {url: linkarr},
    success: function(data){ something
  });
});

一种方法是你可以使用标志来检查和执行Ajax方法

$('button').click(function(e){
  var linkarr = [];
  var $input = $('.default');
  var isValidUrl = /[0-9a-z_-]+\.[0-9a-z_-][0-9a-z]/; // URLvalid check
  var callAjax = true;

  $input.each(function() {
    var inputVal = $(this).val();
    if(!isValidUrl.test(inputVal)) {
      $(this).parent().animateCss('shake');
      callAjax  = false;
      return false;
   // if input is not valid, I want to stop the code here.
    }
    if(inputVal) linkarr.push(inputVal);
  });

  e.preventDefault();
  if(callAjax)
    {
   $.ajax({
    url: '/api/compress',
    type: 'POST',
    dataType: 'JSON',
    data: {url: linkarr},
    success: function(data){ something
  });
    }
});

您需要让每个循环的外部知道内容的状况。

$('button').click(function(e){
  var linkarr = [];
  var $input = $('.default');
  var isValidUrl = /[0-9a-z_-]+\.[0-9a-z_-][0-9a-z]/; // URLvalid check
  var blnIsValid = true;

  $input.each(function() {
    var inputVal = $(this).val();
    if(!isValidUrl.test(inputVal)) {
      $(this).parent().animateCss('shake');
      // if input is not valid, I want to stop the code here.
      // Input isn't valid so stop the code
      blnIsValid = false;
      return false; // Alternatively don't stop so that any other invalid inputs are marked
    } 

    if(inputVal) linkarr.push(inputVal);
  });

  e.preventDefault();

  // Check to make sure input is valid before making ajax call
  if (blnIsValid) {
    $.ajax({
      url: '/api/compress',
      type: 'POST',
      dataType: 'JSON',
      data: {url: linkarr},
      success: function(data){ something
    });
  }
});