【问题标题】:using jquery addclass and removeclass in PHP在 PHP 中使用 jquery addclass 和 removeclass
【发布时间】:2015-03-19 12:28:39
【问题描述】:

我正在处理一个 PHP-Jquery-Ajax 提交信息表单,我想使用 addclass 和 removeclass jquery 方法,但我不能让它按我的意愿工作,所以我的问题是:我必须如何修复下面的代码以便根据用户输入添加 css?

addclass 和 removeclass 在我验证输入字段的函数 verificaForm 中,在这种情况下,我只向您展示两个字段验证,但还有更多......我也知道那里有一个库(validate.js)这有助于验证来自用户的输入,但在这种特定情况下,我必须使用此代码。

这是我的 js 代码,提前致谢:

$(document).ready(function () {

    $('#ID_formulario').on('submit', function (e) {

        e.preventDefault();

        var nombre = $('input#ID_nombre').val().trim();
        var email = $('input#ID_email').val().trim();

        if (validaForm(nombre, email)) {

            $('#result').html("<b>resolviendo peticion...</b>");

            var url = $(this).attr('action');
            var data = $(this).serializeArray();
            var type = $(this).attr('method');

            //...more code goes here ... it works fine ...
        }

    });
});

function validaForm(nombre, email) {

    if ((nombre == '') || nombre.replace(/s+/, '') == '') {
        alert("Favor especificar nombre");
        nombre.addClass('hightlight');
        return false;
    } else {
        else nombre.removeClass('hightlight');
    }

    if (nombre.length < 4) {
        alert('El valor del campo es muy corto');
        return false;
    }
    if ((email == '') || email.replace(/s+/, '') == '') {
        alert("Favor especificar correo");
        return false;
    }
    return true;
}

【问题讨论】:

  • 语法错误,else 放错地方了?
  • 您将 var nombre 与 .val().trim() 一起使用。您需要将类添加到输入中,而不是添加到输入的 val() 中。如果您创建另一个变量,例如 var nombre =('input#ID_nombre');它会起作用的。 jsfiddle.net/jnfnLmqg

标签: javascript php jquery ajax


【解决方案1】:

您应该将元素传递给函数,而不是值。然后您可以获取函数内的值。类似的东西:

 var nombre = $('input#ID_nombre');
 var email = $('input#ID_email');

    if(validaForm(nombre, email)) 

    ....


   function validaForm(nombre,email){

   var nombre_value = nombre.val().trim();
   var email_value = email.val().trim();
   .......

【讨论】:

  • 你是对的,我很惭愧,顺便说一句,你如何在你的代码中使用 addclass 和 removeclass 方法,它可能是这样的:nombre_value.addclass("myclass");?
  • 不,它将是 nombre.addClass("className") ,这就是为什么你必须传递元素而不是值
【解决方案2】:

因此,您可以将类添加到 jQuery 对象而不是值。如下更改。

替换

var nombre = $('input#ID_nombre').val().trim();
var email = $('input#ID_email').val().trim();

if (validaForm(nombre, email)) {

if (validaForm($('input#ID_nombre'), $('input#ID_email'))) {

然后修改你的函数如下。

function validaForm(nombre,email) {

    var nombreVal = $.trim(nombre.val());
    var emailVal = $.trim(email.val());

    if ((nombreVal == '') || nombreVal.replace(/s+/, '') == '') {
    ..........
    ..........
}

并删除此处的其他内容:

} else {
    else nombre.removeClass('hightlight');
}

然后改成

} else {
    nombre.removeClass('hightlight');
}

【讨论】:

  • 我10分钟前也是这样回答的!?
  • 谢谢,addclass方法应该放在函数的第一个if吧?
  • 看起来是这样的:)但这也取决于您的需求。
  • 感谢 LShetty,两个答案(Francesco 和你的)都解决了我的问题
猜你喜欢
  • 2018-03-02
  • 1970-01-01
  • 2011-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 2013-02-18
相关资源
最近更新 更多