我有一个select元素,它使用ajax将一些数据发布到php脚本中。
我的html看起来像这样:
<select id="productoptiekeuze" class="productchoice" required="">
<option value="">Maak uw keuze</option>
<option value="0" data-src="45">€ 45 - Formaat: 60 cm Kleur: century oak Materiaal: kunststof </option>
<option value="1" data-src="45">€ 45 - Formaat: 60 cm Kleur: century oak Materiaal: kunststof </option>
<option value="2" data-src="55">€ 55 - Formaat: 80 cm Kleur: dark oak Materiaal: kunststof </option>
<option value="3" data-src="55">€ 55 - Formaat: 80 cm Kleur: grey Materiaal: graniet </option>
<option value="4" data-src="55">€ 55 - Formaat: 80 cm Kleur: grey Materiaal: graniet </option>
<option value="5" data-src="95">€ 95 - Formaat: 120 cm Kleur: century oak Materiaal: eik </option>
<optgroup label=""></optgroup>
</select>
最后一个optgroup是在IOS中解决问题。
这是我的ajax:
tpj('#productinfo').on('change', '#productoptiekeuze', function() {
var $aangepasteprijs = tpj('#productoptiekeuze').find('option:selected').attr('data-src'),
$huidigeprijs = tpj('#price').text(),
$oudeprijs = tpj('#oldprice').text(),
$alias = tpj('input[name="alias"]').val(),
$quantity = tpj('input[name="quantity"]').val(),
$value = tpj('#productoptiekeuze').find('option:selected').val(),
url = 'includes/prodoptie.php';
var posting = tpj.post( url, {
aangepasteprijs: $aangepasteprijs,
huidigeprijs: $huidigeprijs,
oudeprijs: $oudeprijs,
alias: $alias,
quantity: $quantity,
value: $value
} );
posting.done(function( data ) {
tpj( "#productinfo" ).empty().append( data );
tpj('option:contains(' + $value + ')').attr('selected', true);
});
});
我将所选选项的值发布到脚本中,并希望在结果中自动选择该选项。但是我得到了真正的怪异行为,有时还能奏效,但是大多数时候我都没有反应,也没有与我点击的完全不同的东西。
为什么会这样呢?
You can see it functioning here(这是WINKELWAGEN中的PLAATS按钮上方的下拉列表)
返回的我的PHP脚本具有完全相同的列表和值。
最佳答案
我认为您完成的发布找不到您的选择。您应该进行两个div操作,并且仅更新需要更新的内容,因此您的选择不会因重新添加而生效。
否则,您可以尝试像这样发布:
posting.done(function( data ) {
tpj( "#productinfo" ).empty().append( data );
tpj('option[value="'+$value+'"]').prop('selected', true);
});