jQuery以正确的格式将表单输入添加到隐藏字段输入值

时间:2015-05-27 02:14:47

标签: jquery html

我有一个与this非常相似的问题,但我似乎无法让它发挥作用。

我有这样的输入:

<input id="authorities" name="authorities" type="text">

这样的隐藏输入:

<input id="team_authority_emails" name="team[authority_emails]" type="hidden" value="{asvxcvxcvva@gmail.com,test@test.com.au}">

jQuery的:

$('#authorities').bind("keyup", function() {
  var val = $(this).val();
  $('#team_authority_emails').val(val); 
});

我想要实现的是以正确的格式将输入值从authorities传递到team_authority_emails,同时保留当前值。例如。如果我添加了新的电子邮件tesdadf@adfs.com,则隐藏字段中的值将变为value="{asvxcvxcvva@gmail.com,test@test.com.au,tesdadf@adfs.com}"

4 个答案:

答案 0 :(得分:0)

这是我的解决方案:

var delay = (function(){
  var timer = 0;
  return function(callback, ms){
    clearTimeout (timer);
    timer = setTimeout(callback, ms);
  };
})();

$('#authorities').on("keyup", function() {
  delay(function(){
      var arr = [];
      var email = $('#authorities').val();
      arr.push(email);
      $('#team_authority_emails').val(arr);
      console.log(arr);
      $('#authorities').val('');
  }, 1000 );
});

我还为keyup添加了延迟。

答案 1 :(得分:0)

一种方法如下:

$('#authorities').bind("keyup", function(e) {
    var value = $(this).val();
    if(e.which == 13 && value != ''){ //And other validations you may want
        var value = $(this).val();
        $('#team_authority_emails').val(function(i,val) {
            return val + (val ? ', ' : '') + value;
        });
        $(this).val('');
        return false;
    }
});

说明:等到用户按下回车键,然后将值添加到隐藏输入并重置输入。

FIDDLE:https://jsfiddle.net/lmgonzalves/9h5rwgp3/3/

答案 2 :(得分:0)

您可以使用多种方式,我只需学习this,您可以进一步修改以满足您的需求

String.prototype.replaceAt=function(index,string,separator)
{console.log(index,separator,string);
 return this.substr(0, index) + separator + string + "}" +     this.substr(index+string.length);
}

$("#enter").click(function() {
  var inputA = $("#authorities").val();
  var inputB = $("#team_authority_emails").val();
  console.log(inputB.replaceAt((inputB.length-1),inputA, ","));
  $("#team_authority_emails").val(inputB.replaceAt((inputB.length-1),inputA, "," ));
});

请查看此jsfiddle,查看结果日志。例如,您输入test@gmail.com,结果将为{asvxcvxcvva@gmail.com,test@test.com.au,test}

答案 3 :(得分:0)

您需要一个触发操作的事件,以将键入的电子邮件添加到隐藏字段中。我将在这里使用一个按钮。

点击后,如果电子邮件有效,我会抓取权限上的文本,并用当前值和新值替换隐藏字段的值。

&#13;
&#13;
UPDATE [table] SET [column1] = REPLACE([column1],'i:0#.w|',' ')
&#13;
function isEmail(posibleEmail) {
  //check if email is valid here somehow
  return true;
}

$('#addEmail').on('click', function() {

  var typedEmail = $('#authorities').val();

  if (isEmail(typedEmail)) {

    var presentEmails = $('#team_authority_emails').val().slice(0, -1);

    $('#team_authority_emails').val(presentEmails + ',' + typedEmail + '}');

    $('#out').html($('#team_authority_emails').val()); //just so you can see the result
  }
})
&#13;
&#13;
&#13;