jquery添加更多表单项

时间:2011-12-20 04:58:34

标签: jquery phone-number

所以这是我的问题,我想要的是允许我们的销售人员在客户联系人中添加更多电话号码。

我们有一个看起来像这样的表格。 (注意我只展示了我们联系区域的部分)

<form>
<div id="numbers">
<input id="no1" value="" class="phone" type="numbers"/>
</div>
</form>

所以基本上我想要的是,当他们完成一个电话号码时,它会在它下面添加一个新的输入框,并询问他们是否还想添加。

然后我需要找出存储它们的最佳方法,任何建议?

我的想法是将他们加在一起,如下所示

025555555,0311555445,044585522

3 个答案:

答案 0 :(得分:1)

  1. 您需要该字段上的名称,否则表单不会随帖子提交。仅提交带有名称的输入。 当然,除非您通过AJAX提交并自行构建帖子数据。
  2. 不要将数据存储为逗号分隔值。为电话号码保留一个单独的表格,并使用此人与其电话号码之间的一对多关系。标准化数据(几乎)总是正确的方式。
  3. 你真的需要无限的电话号码吗?或者一些小的固定数字是否足够?说,电话,备用电话和手机?如果3会这样做,为什么不创建三个文本框并使后两个可选?
  4. 您可以使用以下内容:
  5. 示例:

    $(function() {
         $(document).on('blur','[name="phone"]', function() {
             var $phones = $('[name="phone"]'),
                 empty = $phones.filter( function() { return !$(this).val(); } ).length;
             if (empty == 0) { // don't add a new one unless they all have values
                $phones.filter(':last').after( '<input type="text" name="phone" class="phone" type="numbers" />' );
             }
         });
    });
    

答案 1 :(得分:0)

试试这个演示 - http://jsfiddle.net/cAMAe/2/

$('#numbers input').last().keypress(function() {
  if($('#numbers input').last().val().length > 5)
  {
     $(this).clone('false').appendTo("#numbers");
    $('#numbers input').last().val('');
  }
});

只需将id更改为class。如果由于某种原因你无法删除id,请执行if块

中的操作
$input = $('#numbers input').last();
$input.clone(false).find("*").attr("id",$input.attr("id")+'111').attr('value','').appendTo("#number");

答案 2 :(得分:0)

我的想法是这样的:

register(1);
function register(i)
{
    $('#no'+i).blur(function()
    {
        if($('#no'+i).val().get().matches(reg))
        {
            generated_id="#no"+++i;
            $('#numbers').append('<div><input type="text" id='+generated_id+'...></div>')
            register(i);
        }
    })
}