jquery - 防止序列化输入

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

最佳答案

在序列化之前,检查 value 是否对于 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();
}

关于jquery - 防止序列化输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47159314/

相关文章:

jquery - 如何在 asp.net mvc 中通过 jquery ajax 删除行后更新列表?

jquery - 单击时显示同级 <i>

响应窗口大小的 jquery 可调整大小的栏

javascript - 打开一个模态对话框,包含表格单元格上的动态数据单击

javascript - 检查横幅是否加载

html - Firefox 向右浮动时将内容推出 div

javascript - 删除第一个字符并添加值

javascript - 比较点的总和与理想的点的总和

jquery - 如何创建一个简单的 setTimeout 循环

html - 最后加载视频元素