Php Jquery用于重置下拉选择菜单,该菜单在一个菜单上工作,但在另一个菜单上工作时使用相同的代码
我使用以下ajax/jquery/php将数据拉入选择框。在此之后,如果用户对以前的选择框进行了任何更改,我将使用下面的代码重置选择下拉菜单。奇怪的是,如果用户更改了“客户”下拉列表,则会重置所有数量框和所有linetotal计算以及库存下拉列表,但出于某些奇怪的原因,会将相同的功能复制并粘贴到“车辆”下拉列表中,从而清除“数量”文本框,清除linetotal计算,但是保留了stock下拉菜单的选择方式,而不是将其重置为默认值,这与在customer下拉菜单上工作的代码完全相同,可以在更改时重置所有内容Php Jquery用于重置下拉选择菜单,该菜单在一个菜单上工作,但在另一个菜单上工作时使用相同的代码,php,jquery,ajax,function,Php,Jquery,Ajax,Function,我使用以下ajax/jquery/php将数据拉入选择框。在此之后,如果用户对以前的选择框进行了任何更改,我将使用下面的代码重置选择下拉菜单。奇怪的是,如果用户更改了“客户”下拉列表,则会重置所有数量框和所有linetotal计算以及库存下拉列表,但出于某些奇怪的原因,会将相同的功能复制并粘贴到“车辆”下拉列表中,从而清除“数量”文本框,清除linetotal计算,但是保留了stock下拉菜单的选择方式,而不是将其重置为默认值,这与在customer下拉菜单上工作的代码完全相同,可以在更改时重置
<script type="text/javascript" charset="utf-8">
$(document).ready(function () {
$('#customer').on('change', function () {
$('#vehicle').html("<option value=''>Select</option>"); // add this on each call then add the options when data receives from the request
$.getJSON('select.php', {
customerId: $(this).val()
}, function (data) {
var options = '';
for (var x = 0; x < data.length; x++) {
options += '<option value="' + data[x]['id'] + '">' + data[x]['reg'] + ' - ' + data[x]['make'] + ' - ' + data[x]['model'] + '</option>';
}
$('#vehicle').html(options);
$("select").select2();
});
});
$('#customer').on('change', function () {
$('#qty1').val('');
$('#linetotal1').text('');
$("#stock1").val($("#stock1 option:first").val());
$('#qty2').val('');
$('#linetotal2').text('');
$("#stock2").val($("#stock2 option:first").val());
$('#qty3').val('');
$('#linetotal3').text('');
$("#stock3").val($("#stock3 option:first").val());
$('#qty4').val('');
$('#linetotal4').text('');
$("#stock4").val($("#stock4 option:first").val());
$('#qty5').val('');
$('#linetotal5').text('');
$("#stock5").val($("#stock5 option:first").val());
$('#qty6').val('');
$('#linetotal6').text('');
$("#stock6").val($("#stock6 option:first").val());
});
$('#vehicle').on('change', function () {
$('#qty1').val('');
$('#linetotal1').text('');
$("#stock1").val($("#stock1 option:first").val());
$('#qty2').val('');
$('#linetotal2').text('');
$("#stock2").val($("#stock2 option:first").val());
$('#qty3').val('');
$('#linetotal3').text('');
$("#stock3").val($("#stock3 option:first").val());
$('#qty4').val('');
$('#linetotal4').text('');
$("#stock4").val($("#stock4 option:first").val());
$('#qty5').val('');
$('#linetotal5').text('');
$("#stock5").val($("#stock5 option:first").val());
$('#qty6').val('');
$('#linetotal6').text('');
$("#stock6").val($("#stock6 option:first").val());
});
});
</script>
因此,如果我更改车辆选择,它将清除数量和行总数,但保持库存不变,如果我更改客户的顶部选择,它将使用相同的功能清除选择
顺便说一下,所有的select都使用名为SELECT2的JQUERY插件。我假设vechicle是一个select标记
$('#vehicle').html(options);
在这一行中,您要将其转换为选项标记,请使用firebug仔细检查HTML
如果您想在select标记上添加值,可以这样做
$('#vehicle').append(options);
抱歉,刚刚看到我要找的$select.select2;这一定是一个注释,而不是回答。通常我在ajax中使用async:false来修复这个问题。因此,我将首先加载HTML,因为情况可能是脚本已经加载,但来自ajax的数据尚未完成,因此没有应用您想要的规则。@hungerpain抱歉,我找不到注释。。我还是新来的。。已编辑。。所以至少我可以回答为什么第一个选择可以正常工作,而第二个不行?问题不在于ajax,而在于jquery重置了下拉列表。