jQuery将已检查的输入文本传递给其他输入

时间:2018-11-26 01:50:02

标签: jquery

我试图将列表中用于选定值的列表项中的文本传递给表单提交时的隐藏字段值,但是我不确定选择和传递这些值(电子邮件)的最佳方法每次提交表单时都会被捕获。

提供与以下表单字段进行交互的信息:

<form action="/app/blog/create?_csrf={{csrfToken}}" method="post" enctype="multipart/form-data" id="blogSubmission">
<div class="member-tag-container">
    <ul class="list-group checked-list-box">
        <li class="list-group-item">
            <p><input type="checkbox" class="member-tag-checkbox" name="memberTag[0]" value="1">John Doe (john.doe@gmail.com)</p>
        </li>
        <li class="list-group-item">
            <p><input type="checkbox" class="member-tag-checkbox" name="memberTag[1]" value="2">Jane Doe (jane.doe@gmail.com)</p>
        </li>
        <li class="list-group-item">
            <p><input type="checkbox" class="member-tag-checkbox" name="memberTag[2]" value="3"> (example@gmail.com)</p>
        </li>
        <input type="hidden" class="member-tag-hidden" name="memberTagEmail">
    </ul>
</div>
<button type="submit" id="create-blog-button"></button>
</form>

这是jQuery:

$('#blogSubmission').submit(function(){
        var regExp = /\(([^)]+)\)/;
        var memberEmail = []
        $("input.member-tag-hidden:checked").each(function() {
            memberEmail.push(regExp.exec($(this).parent()))
        })
});

这是我想要实现的目标:

选中的复选框= name="memberTag[0]", name="memberTag[2]"

隐藏字段已更新= <input type="hidden" class="member-tag-hidden" name="memberTagEmail" value="john.doe@gmail.com, example@gmail.com">

1 个答案:

答案 0 :(得分:1)

如果我了解你,我会

  • 获取价值
  • 将它们添加到隐藏字段

代码:(未经测试)

$('#blogSubmission').submit(function(){
        var regExp = /\(([^)]+)\)/;
        var memberEmail = []

        // Get all of the checkboxes checked
        $("input.member-tag-checkbox:checked").each(function() {
            var result = regExp.exec($(this).parent().text());
            if (typeof result[1] !== 'undefined') { // if has value
              memberEmail.push(result[1]);
            }
        })

        // Add to hidden
        $('.member-tag-hidden').val(memberEmail.join(', '));
});