我有一个与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}"
。
答案 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;
}
});
说明:等到用户按下回车键,然后将值添加到隐藏输入并重置输入。
答案 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)
您需要一个触发操作的事件,以将键入的电子邮件添加到隐藏字段中。我将在这里使用一个按钮。
点击后,如果电子邮件有效,我会抓取权限上的文本,并用当前值和新值替换隐藏字段的值。
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;