如何验证 jquery 对象中的每个值
Posted
技术标签:
【中文标题】如何验证 jquery 对象中的每个值【英文标题】:How to validate each value inside a jquery object 【发布时间】:2014-05-04 20:34:16 【问题描述】:我有以下功能:
jQuery 代码:
function validarEnviarPatrocinio()
var fila = $("#fila").val();
for(var e=1; e<6; e++)
$("#email_contactopatrocinador"+e).val($("#email_contactopatrocinador"+e+fila).val());
var email = $("#email_contactopatrocinador"+e+fila);
PHP/HTML 代码:
<?php foreach ($this->items as $i => $item): ?>
<?php for($e=1; $e<6; $e++) ?>
<label for="email_contactopatrocinador<?php echo $e.$i; ?>">
<?php echo JText::_('COM_CSTUDOMUS_GANA_PATROCINADOR_EMAIL');?>
</label>
<input name="email_contactopatrocinador<?php echo $e.$i; ?>" id="email_contactopatrocinador<?php echo $e.$i; ?>" placeholder="<?php echo JText::_('COM_CSTUDOMUS_EJEMPLO_EMAIL');?>" type="email" />
<?php ?>
<button id="enviarForm2" onclick="document.getElementById('cb<?php echo $i; ?>').checked = true; document.getElementById('seleccionado').value = <?php echo $item->id_inmueble; ?>; document.getElementById('fila').value = <?php echo $i; ?>; if(!validarEnviarPatrocinio()) return false; Joomla.submitbutton('saloninmobiliarios.ganapatrocinador');" class="uk-button uk-float-right"><?php echo JText::_('COM_CSTUDOMUS_PATROCINADOR_SEND_RECOM'); ?></button>
<?php endforeach; ?>
<input type="hidden" name="fila" id="fila" value=""/>
此函数循环遍历“电子邮件”类型的 5 个输入字段。我想对每个输入进行验证,确保它们在其中插入电子邮件格式。他们填写或留空哪个字段无关紧要。
【问题讨论】:
Validate email address in javascript?的可能重复 @undefined 这不是重复的,我在问“”,所以之后我可以验证每个字段,但我首先需要知道如何管理 jquery 对象. 几乎不可能检查电子邮件地址是否有效,除非向该地址发送电子邮件。对于电子邮件的构成,您是否有一些特定的规则? “”,这意味着什么?你的问题很模糊,你问题的关键是验证电子邮件地址。您在选择目标元素时遇到问题吗?fila
是什么?
@undefined 我在选择目标元素时遇到问题.. 对不起我的英语:(
【参考方案1】:
你让它变得复杂了。不需要使用 ID 来选择目标元素,当您有多个共享相同角色的元素时,应该使用类来代替。您可以使用 jQuery each
方法向元素添加类并遍历选定的元素:
$('.email_fields').each(function()
var email = this.value;
// validate the element's value
);
如果需要为元素添加唯一标识符,您可以继续向元素添加id
属性或特定data
属性,如data-id="..."
并获取data
属性的值,你可以使用 jQuery data
方法。
// within the `each` callback context
var id = $(this).data('id');
【讨论】:
【参考方案2】:您可以使用jquery validator 并插入一个正则表达式进行验证。 验证器将选择器作为输入,并使用您定义的规则集对其进行验证,如下所示:
$('form').validate(
rules:
field1: pattern: /^[A-Z]2[0-9]5$/ // As RegExp
);
*您的案例的相关正则表达式是: /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]2,4 )+$/
在任何情况下,您也可以在 js 中创建正则表达式并按照here 所述运行测试函数:
【讨论】:
validate
插件有email
验证器,不需要指定模式,field1: email: true
。
非常正确。我把它写下来以防他想要比普通电子邮件更通用/复杂的验证【参考方案3】:
function validarEnviarPatrocinio()
var fila = $("#fila").val();
for(var e=1; e<6; e++)
$("#email_contactopatrocinador"+e).val($("#email_contactopatrocinador"+e+fila).val());
var email = $("#email_contactopatrocinador"+e+fila);
if ($.trim(email ).length == 0)
alert('Please enter valid email address in '+i+'th Field ');
if (validateEmail(email))
alert('Email'+i+' is valid');
else
alert('Invalid Email'+i+' Address');
function validateEmail(sEmail)
var filter = /^([\w-\.]+)@((\[[0-9]1,3\.[0-9]1,3\.[0-9]1,3\.)|(([\w-]+\.)+))([a-zA-Z]2,4|[0-9]1,3)(\]?)$/;
if (filter.test(sEmail))
return true;
else
return false;
【讨论】:
您正在修剪 jQuery 对象而不是字符串。以上是关于如何验证 jquery 对象中的每个值的主要内容,如果未能解决你的问题,请参考以下文章
如何比较字典值中的多个数组,并将每个数组元素的字典键映射到新数组/列表中
验证 package.json 依赖值中的 semver 版本