'使用文本区域中的字符串动态填充下拉菜单
`Dynamically populate a dropdown menu using strings from a textarea
我希望最好用jquery编码,但通常情况下,javascript对我来说仍然很好。
问题是这样的:我在同一页面上有一个文本区域和一个下拉菜单。我可以通过键入或粘贴文本将文本填充到文本区域中。每行的文本区域包含以逗号分隔的电子邮件和姓名:例如:例如
email1@xyz.com,理查兹·
email2@abc.com
EmilY34@yahoo.com , 艾米丽·怀特斯
Juniorpope4u@gmail.com , 少年
Mike87@yahoo.co.uk,
Ademola45thus@gmail.com,阿德莫拉·埃里克森
等(请注意,逗号可以在任何地方,甚至可以不存在)我希望下拉菜单自动填充在文本区域找到的电子邮件的域名值。注意:下拉列表中不应有重复的列表,并且列表应在下拉列表中按字母顺序排列在我的示例中,下拉列表将填充如下:
都
abc.com
gmail.com
xyz.com
yahoo.com
yahoo.co.uk
默认选定的下拉项的值为 ALL。请我知道如何在php中执行此操作,但对使用javascript或jquery一无所知。另外,php必须刷新页面才能工作,但javascript不需要重新加载页面
嗨,请检查 https://jsfiddle.net/pykmgyyt/5/...
jQuery
$(document).ready(function(){
var arr= new Array();
arr[0]="ALL"; //Setting fist element of the array to ALL
$('.btnUpdate').on('click', function(){
var newEmails=new Array();
var newEmails=$('.taEmails').val().split(/[ ,'r'n]+/); // get text area value and split text whenever jq encounters comma, space or newline and storing it into an array
/* Travese through newEMails array and push string which contains '@' in to arr array */
$.each(newEmails, function(i){
if (newEmails[i].indexOf('@') > -1){
arr.push(newEmails[i].substring(newEmails[i].indexOf("@") + 1)); /* Get only the domain names*/
console.log(newEmails[i]);
}
});
// check for duplicates
var result = [];
$.each(arr, function(i, e) {
if ($.inArray(e, result) == -1) result.push(e);
});
arr= result;
$('.ddEmails').empty(); // Empty dropdown
arr.sort(); // sort array
/*Append new array*/
$.each(arr, function(i){
$('.ddEmails').append("<option>"+arr[i]+"</option>");
//console.log(arr[i]);
}); /// arr each
}); // click
});
- 用逗号和换行符分隔
-遍历每个拆分的字符串
-
检查是否有@符号
-
找到域名并返回
-在选择框中显示
.HTML
<textarea id="emails" onkeyup="finddomain();">
email1@xyz.com, Richards Dough
email2@abc.com
EmilY34@yahoo.com , Emily Whites
Juniorpope4u@gmail.com , Junior
Mike87@yahoo.co.uk,
Ademola45thus@gmail.com, Ademola Erickson
</textarea>
<select id="add_domain" name="add_domain">
</select>
爪哇语
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script type="text/javascript">
function extractDomain(url) {
var ind=url.indexOf("@");
if (ind > 0)
{
var domain = url.substr((ind+1));
return domain;
}
else
return '';
}
function finddomain()
{
// You can do the below parts on javascript event
data = document.getElementById('emails').value;
var arr = data.split(/['n,]+/); //data.split(''n');
var arrayLength = arr.length;
var sel = document.getElementById("add_domain");
for (var i = 0; i < arrayLength; i++) {
var domain = extractDomain(arr[i].trim());
if (domain != '' && $("#add_domain option[value='"+domain+"']").length == 0)
{
var option = document.createElement("option");
option.text = domain;
option.value = domain;
sel.appendChild(option);
}
}
}
</script>
下面的部分是提取多个事件的域
<script type="text/javascript">
$(document).ready(function() {
$('#emails').on('keyup keypress blur change', function(e) {
// e.type is the type of event fired
finddomain();
});
});
</script>
- javascript在动态Url中匹配并添加字符串
- 从表单中动态生成一个字符串,传递给通过AJAX加载的PHP文件
- 如何将动态构建的字符串作为http头在http.call中与流星一起传递
- 如何在字符串中的值之前删除字符串中的动态数据?/ 使用 Lodash 的 _.trimStart 与动态数据
- 将字符串与integer连接,用作jquery中的变量(创建动态变量)
- 从标记值jquery中删除动态生成的字符串
- 将字符串动态转换为布尔值
- 根据 Array Javascript 中的字符串值动态创建数组名称
- '使用文本区域中的字符串动态填充下拉菜单
- 使用 URL 查询字符串动态显示 Facebook Open Graph
- 获取表单中选中复选框的值以分隔字符串(动态命名)
- 如何从HTML字符串动态添加脚本到网页
- 如何执行一个JavaScript函数,当我发送它的名字作为字符串动态不带参数
- 连接字符串动态Javascript
- 如何通过构建字符串动态访问变量
- 如何将插入的字符串/动态属性传递到Javascript哈希中
- JavaScript 从字符串动态创建多维数组
- 从字符串动态创建Javascript对象,并将对象作为函数的参数
- 在asp.net中添加字符串动态java脚本
- JSP名称参数作为字符串动态显示在同一个JSP页面中