revalidateField无效

时间:2015-06-16 14:44:36

标签: jquery jquery-plugins formvalidation-plugin

我使用this plugin来验证表单。

在我的表单上,我输入了密码并显示了密码'复选框。 当用户点击显示密码时,输入会从密码类型更改为文本。

$('#show_password').off();
$('#show_password').on('click', function() {
  var change = '';
  var $input = $('#cpassword');
  if ($(this).is(':checked')) {
    change = 'text';
  } else {
    change = 'password';
  }
  var rep = $('<input type="' + change + '" />')
    .attr('id', $input.attr('id'))
    .attr('name', $input.attr('name'))
    .attr('class', $input.attr('class'))
    .val($input.val())
    .insertBefore($input);
  $input.remove();
  $input = rep;
  $('#frm_user_details').formValidation('revalidateField', 'password');
});

基本上输入类型已更改(但保持相同的名称),我需要重新验证字段,但它不起作用。

2 个答案:

答案 0 :(得分:1)

一个问题可能是因为您正在克隆密码字段的所有属性,即使id也是如此。根据w3标准,您不应该有两个具有相同ID属性的元素。

所以你可以尝试下面的代码:

$('#show_password').off();
$('#show_password').on('click', function() {
  var change = '';
  var $input = $('#cpassword');
  if ($(this).is(':checked')) {
    change = 'text';
  } else {
    change = 'password';
  }
  var rep = $('<input type="' + change + '" />')
    .attr('id', $input.attr('id')+'_text')
    .attr('name', $input.attr('name'))
    .attr('class', $input.attr('class'))
    .val($input.val())
    .insertBefore($input);
  $input.remove();
  $input = rep;
  $('#frm_user_details').formValidation('revalidateField', 'password');
});

答案 1 :(得分:1)

  

使用复杂表单时,可能会动态地将字段添加到表单中(或从表单中删除)。新添加的字段也需要进行验证。

因此,在删除字段并创建新字段后,您必须使用addField方法将其添加到$('#show_password').off(); $('#show_password').on('click', function () { var change = ''; var $input = $('#cpassword'); if ($(this).is(':checked')) { change = 'text'; } else { change = 'password'; } var rep = $('<input type="' + change + '" />') .attr('id', $input.attr('id')) .attr('name', $input.attr('name')) .attr('class', $input.attr('class')) .val($input.val()) .insertBefore($input); $input.remove(); $input = rep; // Add the new field to the plugin // For the second param, you can either use the field object or its name. // See // http://formvalidation.io/api#add-field $('#frm_user_details').formValidation('addField', $input); // Finaly revalidate it $('#frm_user_details').formValidation('revalidateField', 'password'); });

请参阅以下代码:

{{1}}

工作示例:

参考文献: