【问题标题】:How to do this the with Jquery instead of javascript如何使用 Jquery 而不是 javascript 来做到这一点
【发布时间】:2016-11-26 21:25:29
【问题描述】:

我一直在尝试将这部分脚本转换为 jQuery 而不是 vanilla javascript,但我不确定如何使用 jQuery 循环遍历元素。基本上,我从每个字段中获取一个数据属性值,用作在字段附近显示的错误消息。 这一切都在提交按钮上的点击事件中,仅供参考

jQuery 的方式是什么?

//Set some variables
        var invalidFields = $(form).querySelectorAll(':invalid'),
        errorMessages = $(form).querySelectorAll('.error-message'),
        parent;

        // Remove any existing messages
        for (var i = 0; i < errorMessages.length; i++) {
            errorMessages[i].parentNode.removeChild(errorMessages[i]);
        }

        //Get custom messages from HTML data attribute for each invalid field
        var fields = form.querySelectorAll('.sdForm-input');
        for (var i = 0; i < fields.length; i++) {
            var message = $(fields[i]).attr('data-ErrorMessage');
            $(fields[i]).get(0).setCustomValidity(message);
        }

        //Display custom messages
        for (var i = 0; i < invalidFields.length; i++) {
            parent = invalidFields[i].parentNode;
            parent.insertAdjacentHTML('beforeend', '<div class='error-message'>' +
                invalidFields[i].validationMessage +
                "</div>");
        }

【问题讨论】:

标签: javascript jquery code-translation


【解决方案1】:

您可以简单地替换它。

var fields = form.querySelectorAll('.sdForm-input');
for (var i = 0; i < fields.length; i++) {
    var message = $(fields[i]).attr('data-ErrorMessage');
    $(fields[i]).get(0).setCustomValidity(message);
}

用jQuery方式替换

var fields = form.find('.sdForm-input');
$.each(fields, function(index, el){
   var message = $(el).attr('data-ErrorMessage');
   $(el).setCustomValidity(message);
});

【讨论】:

    【解决方案2】:

    我将您的代码一对一地转换为 jQuery。但可能还有其他方法,当我知道formsetCustomValidityvalidationMessage 的来源时。

    var $form = $(form);
    
    // Remove any existing messages
    $(".error-message", $form).remove();
    
    // Get custom messages from HTML data attribute for each invalid field
    $(".sdForm-input", $form).each(function() {
        var message = $(this).attr('data-ErrorMessage');
    
        // i don't know where the 'setCustomValidity' function is coming from
        // this is a custom function
        $(this)[0].setCustomValidity(message);
    });
    
    // Display custom messages
    $(":invalid", $form).each(function() {
        // i don't know where 'validationMessage' is comig from
        // this is a custom property
        $(this).parent().append("<div class='error-message'>" + $(this)[0].validationMessage + "</div>");
    });
    

    【讨论】:

    猜你喜欢
    • 2011-10-26
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多