【问题标题】:How to validate each value inside a jquery object如何验证 jquery 对象中的每个值
【发布时间】: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 个输入字段。我想对每个输入进行验证,确保它们在其中插入电子邮件格式。他们填写或留空哪个字段无关紧要。

【问题讨论】:

  • @undefined 这不是重复的,我在问“如何验证 jquery 对象中的每个值”,所以之后我可以验证每个字段,但我首先需要知道如何管理 jquery 对象.
  • 几乎不可能检查电子邮件地址是否有效,除非向该地址发送电子邮件。对于电子邮件的构成,您是否有一些特定的规则?
  • 如何验证 jquery 对象中的每个值”,这意味着什么?你的问题很模糊,你问题的关键是验证电子邮件地址。您在选择目标元素时遇到问题吗? fila 是什么?
  • @undefined 我在选择目标元素时遇到问题.. 对不起我的英语:(

标签: php jquery


【解决方案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 对象而不是字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多