Jquery进程从ajax追加值

时间:2017-06-05 09:13:26

标签: jquery ajax

所以我已经阅读了关于ajax的回调和异步行为,但我无法弄清楚如何从ajax的附加值创建事件。

我有这个HTML:



var searchRequest = null;
$(function() {
  $(':input[type="submit"]').prop('disabled', true);
  var minlength = 5;
  $("#cp").keyup(function() {
    var that = this,
      value = $(this).val().trim();;
    value = value.replace(/\s/g, '');

    if (value.length == minlength) {
      if (searchRequest != null)
        searchRequest.abort();
      searchRequest = $.ajax({
        type: "POST",
        url: "post_job_ville.php",
        data: {
          'searchterm': value
        },
        dataType: "text",
        success: function(msg) {
          $("#ville").append(msg);
        }
      });
    }
  });
});


// Code to remove the disabled state of submit button
if ($('#ville').val()) {
  $(':input[type="submit"]').prop('disabled', false);
  $(':input[type="submit"]').toggleClass('btn-custom btn-primary');
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group">
  <input name="cp" id="cp" class="form-control">
</div>
<div class="form-group">
  <select class="form-control" id="ville">
	<option selected="selected" value="">Select a value</option>
	</select>
</div>
<input type="submit" id="btn-login" class="btn btn-custom btn-lg btn-block" value="Submit">
&#13;
&#13;
&#13;

我的ajax电话工作正常。当某人在输入字段(#cp)中键入5个caracters时,它会触发ajax调用并附加

 <option value="x">...</option> 

到选择菜单(#ville)。

问题是,如果选择带有值的ajax选项,我希望Jquery删除提交按钮的禁用状态。所以我在JS的末尾编写了代码,但由于ajax是异步的,所以它不能像那样工作。我试着把代码放在ajax调用的成功部分,但它没有用。

如果有人知道如何继续,我真的很感激。

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以尝试在您的选择上放置一个事件,如下所示:

$('#ville').on('change', function(e) {
  if (e.target.value) {
    $(':input[type="submit"]').prop('disabled', false);
    /* other stuffs... */
  } else {
    $(':input[type="submit"]').prop('disabled', true);
    /* other stuffs... */
  }
})

Jquery Selector中的“on()”方法允许您在所选元素上放置您选择的事件。 这里我们放置'change'事件以在输入值'change'时回调函数。 您只需检查所选值是否为空(如选择的第一个条目)并完成。

或类似的东西:

$('#ville').on('change', function(e) {
  const value = e.target.value
  $(':input[type="submit"]').prop('disabled', !value);
  /* other stuffs... */
})