У меня есть код ниже и вызывается метод serialize() в форме:
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<form>
<select id="CouponType" name="CouponType">
<option value="MONEYOFF">MONEYOFF</option>
<option value="BONUSPOINTS">BONUSPOINTS</option>
</select>
<input type="button" id="btnSubmit" value="SUBMIT ME" />
<script type="text/javascript">
$("#btnSubmit").click(function (e) {
e.preventDefault();
alert($('form').serialize());
});
</script>
</form>
Что должно произойти, так это то, что только в том случае, если выпадающий список имеет значение, тогда значение должно быть суммировано, но оно всегда подает первый вариант в списке, поэтому результат предупреждения всегда ниже в IE 7.0, IE 8.0, IE 9.0 и Хром:
CouponType=MONEYOFF
Как отправить только выбранные значения из выпадающего списка?
Когда ни один не выбран, IE 9. 0+ делает SelectedIndex = -1 по умолчанию, в то время как IE 7, 8 и Chrome делает SelectedIndex = 0 таким образом помещает первый элемент.
Это то, что вы хотите?
<form>
<select id="CouponType" name="CouponType">
<option value="MONEYOFF">MONEYOFF</option>
<option value="BONUSPOINTS">BONUSPOINTS</option>
</select>
<input type="button" id="btnSubmit" value="SUBMIT ME" />
<script type="text/javascript">
$("#btnSubmit").click(function (e) {
e.preventDefault();
alert($('#CouponType').val());
});
</script>
</form>
Вам нужно будет создать пустую опцию, которая будет выбрана по умолчанию, которая не будет представлять значения, если пользователь не выберет один
<form>
<select id="CouponType" name="CouponType">
<option value="">Select a type</option>
<option value="MONEYOFF">MONEYOFF</option>
<option value="BONUSPOINTS">BONUSPOINTS</option>
</select>
<input type="button" id="btnSubmit" value="SUBMIT ME" />
</form>
$("#btnSubmit").click(function (e) {
e.preventDefault();
if ($('#CouponType').val()) {
alert($('form').serialize());
}
});