我有选择框。
<form class="i-hate-u">
<select class="helloMoto" name="helloMoto">
<option value="">Select...</option>
<option value="-1">Other</option>
</select>
</form>
当最终用户选择“其他”选项时,文本输入显示如下:
$('.helloMoto').on('change', function() {
if ($(this).val() == '-1')
$(this).hide();
var input_name = $(this).attr('name');
var input = '<div class="input-group">' +
'<input type="text" class="form-control" name="'+input_name+'" placeholder="Type other.">' +
'<span class="input-group-btn">' +
'<button class="btn btn-primary" onclick="removeSelectOther(this);"><i class="la la-close"></i></button>' +
'</span>' +
'</div>';
$(this).parent().append(input);
});
最后,当最终用户单击“保存”按钮时,我会像这样序列化整个表单:
var data = $('.i-hate-u').serialize();
如您所见,如果用户选择了其他选项,则输入显示为同名。如果用户选择其他选项,我想删除。有没有办法如果序列化的值具有相同的名称,请跳过第一个或-1。
答案 0 :(得分:1)
在序列化之前,检查value
的{{1}}是helloMoto
是否为-1
然后禁用<select>
(如表单提交):
if($('select[name="helloMoto"]').val() == -1)
{
$('select[name="helloMoto"]').attr('disabled', true);
}
或者您可以尝试,只需在序列化时排除helloMoto
:
if($('select[name="helloMoto"]').val() == -1)
{
var data = $('input[name!=security]', $('.i-hate-u')).serialize();
}else
{
var data = $('.i-hate-u').serialize();
}