如何在JQuery验证插件addomethod()

时间:2015-07-14 04:40:00

标签: javascript jquery ajax validation jquery-validate

我目前正致力于使用JQuery验证插件来提供自己的框架,我需要验证客户端和服务器端的CRUD表单。而且表格不是静态的,因此由“车把”动态创建。 JS”。

因此,当使用类创建输入字段时,我映射了客户端验证。

例如 -

<form id="form-asset-create">
  <input type="text" class="my own custom validation for client side" />
</form>

我有客户端验证的自定义方法来调用服务器端并检查已创建的资产是否已添加。但是,当用户输入数据时,我需要异步发送此AJAX调用。 在这下面

我有一个名为clientsideValidation.js的javascript文件,可以在客户端进行验证。

$.validator.addMethod("isUniqueField", function(value, element) {
  var elementname = element.getAttribute('name');
  var data = '%22name%22 : %22' + value + '%22';
  var result = false;
  $.ajax({
    type: "GET",
    url: caramel.url("/apis/assets?type=gadget&q=" + data),
    dataType: "json",
    async: true,
    success: function(data) {
      result = data.list.length <= 0;
      $.validator.messages.isUniqueField = "The " + elementname + " already taken";
    },
    error: function(xhr, thrownError) {
      console.log("error " + xhr.responseText + "  " + thrownError);
    }
  });
  return result;
}, $.validator.messages.isUniqueField);

我尝试过这种方式,但是当我拥有像async : true这样的属性时,我无法得到正确的错误消息,以及当我将其更改为false时,它工作正常。 任何人都可以建议我一个很好的方法来处理这个任务。有没有办法在自定义验证方法中异步发送ajax请求。

当表单准备就绪以及点击提交按钮创建资产时,我必须调用客户端的验证。

$('#form-asset-create').validate();

建议将受到赞赏并提前致谢

1 个答案:

答案 0 :(得分:0)

您必须使用if条件验证提交表单。

例如

$('#form-asset-create').on('submit', function(){
  if($('#form-asset-create').valid()){
      /* START YOUR AJAX CALL OR FURTHER PROCESS HERE*/
  }
});

您必须将所需验证的类及其消息添加到动态创建的文本框中。

对于即

<input type="text" name="email" id="email" class="form-control required email isUniqueField" data-msg-required="This field is required." data-msg-email="Please enter valid Email."   data-msg-isUniqueField="Please enter Unique value." placeholder="Email  *" value="">