所以我已经阅读了关于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;
我的ajax电话工作正常。当某人在输入字段(#cp)中键入5个caracters时,它会触发ajax调用并附加
<option value="x">...</option>
到选择菜单(#ville)。
问题是,如果选择带有值的ajax选项,我希望Jquery删除提交按钮的禁用状态。所以我在JS的末尾编写了代码,但由于ajax是异步的,所以它不能像那样工作。我试着把代码放在ajax调用的成功部分,但它没有用。
如果有人知道如何继续,我真的很感激。
谢谢!
答案 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... */
})