防止序列化输入

时间:2017-11-07 13:34:29

标签: jquery html

我有选择框。

<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。

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();
}