我有一个包含多个电子邮件地址的文本区域,其中包含 ; 分隔符。我们需要使用 JavaScript 或 jQuery 以红色突出显示无效的电子邮件地址。
例如:我在 textarea 中有 10 个用逗号分隔的电子邮件地址,其中 3 个无效,因此这些电子邮件地址应突出显示为红色,用户将能够轻松识别无效的电子邮件地址。
我有一个包含多个电子邮件地址的文本区域,其中包含 ; 分隔符。我们需要使用 JavaScript 或 jQuery 以红色突出显示无效的电子邮件地址。
例如:我在 textarea 中有 10 个用逗号分隔的电子邮件地址,其中 3 个无效,因此这些电子邮件地址应突出显示为红色,用户将能够轻松识别无效的电子邮件地址。
同意该问题缺乏很多必要信息的评论,根据需要和范围,有一些可能的选择。这是一个演示 2 个选项的示例:将有效和无效的电子邮件地址拆分为 2 个不同的文本区域,或者使用 div 显示结果并隐藏 textarea 表单控件。同样,在不知道列表来自何处、如何验证等信息的情况下,这只是一个刺:
祝你好运
HTML
<form name="test" id="test">
<textarea name="valid" id="valid"></textarea><br />
<textarea name="invalid" id="invalid" style="color:red;"></textarea>
</form>
<div id="ta_sudo"></div>
脚本
function processEmailAddresses(){
var addList = 'abc@123.com;www@www.com;t@d.cor;t.dd.www';
separateInvalid(addList);
}
function separateInvalid(addList){
var addArr = addList.split(';');
var validArr = [];
var invalidArr = [];
var compositeArr = [];
for(var i = 0; i < addArr.length; i++){
if(!testEmail(addArr[i])){
invalidArr.push(addArr[i]);
compositeArr.push('<span style="color:red">' + addArr[i]) + '</span>';
}else{
validArr.push(addArr[i]);
compositeArr.push(addArr[i]);
}
}
$('#valid').val(validArr.join(';'));
$('#invalid').val(invalidArr.join(';'));
$('#ta_sudo').html(compositeArr.join(';'))
}
function testEmail(emailAddress){
var regexEmail = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
return regexEmail.test(emailAddress);
}
processEmailAddresses();
有关工作示例,请参阅以下jsFiddle 。
正如其他人所说,你不能用 Textarea 做到这一点。但是,您可以创建一个 div,将其设置为看起来像您的其他表单元素,并将 ContentEditable 属性设置为 True。使用一点 Javascript,您将拥有您正在寻找的东西。
以下代码将遍历以分号分隔的电子邮件地址列表,并使用正则表达式来测试每个地址。如果没有匹配,文本被包裹在一个跨度中并分配一个“红色”类。然后将生成的新 HTML 应用于 contenteditable div,用户将看到突出显示的无效电子邮件地址
JS
$('#btnSubmit').click(function() {
var textEntered = $('#divEdit').text();
var textResult = [];
$.each(textEntered.split(';'), function(index, item) {
if (item.match(/^\S+@\S+\.\S+$/)) {
textResult.push(item);
}
else {
textResult.push('<span class="red">' + item + '</span>');
}
});
$('#divEdit').html(textResult.join(';'));
});
当用户提交表单时,您需要做的就是获取 contenteditable div 的 HTML 并去掉 HTML,您将只剩下输入的电子邮件地址的文本。
注意:尝试使用正则表达式验证电子邮件地址有很多挑战(Using a regular expression to validate an email address)。小心你想要达到的目标。