如何动态更改semantic-ui表单验证提示文本(验证后)?

时间:2016-03-03 21:21:04

标签: jquery semantic-ui

我有以下(基本)语义形式检查设置:

$('#form_login').form({
  fields: {
    username: {
      identifier: 'username',
      rules: [{
        type: 'empty',
        prompt: 'Please enter your user name'
      }]
    },
    password: {
      identifier: 'password',
      rules: [{
        type: 'empty',
        prompt: 'Please enter your password'
      }]
    }
  }
});

按照宣传的方式工作,但我希望prompt文字动态定位 - 访问时。

我该怎么做(因为它不接受函数引用)?

1 个答案:

答案 0 :(得分:1)

我认为提示文本只能在当前版本(2.1)中静态设置。我试图做类似的事情,我发现最好的方法是打破规则,以便每个动态结果都由自定义规则处理。

例如,我创建了一个表单,用户可以更新其密码。如果没有在“当前密码”中输入任何输入,我希望表单可以提交。字段,以及其他遵守通常的密码规则(新密码可以与旧密码相同,最小长度为6)。在我的表单字段中,我设置了如下规则:

currentPassword: {
        identifier: 'currentPassword',
        optional: true,
        rules: [{
          type: 'empty',
          prompt: 'Please enter your current password'
        }]
      },
      newPassword: {
        identifier: 'newPassword',
        rules:[{
          type: 'newPasswordMinLength',
          prompt: 'Password must be at least 6 characters long!'
        },{
          type: 'newPasswordDifferent',
          prompt: 'New password must be different from your current one'
        }]
      },
      repeatPassword: {
        identifier: 'repeatPassword',
        rules: [{
          type: 'repeatPasswordMatch',
          prompt: 'Password does not match'
        }]

然后我定义了这些自定义规则:

  var currentPassElement = $('[name="currentPassword"]');
  var newPassElement = $('[name="newPassword"]');

  $.fn.form.settings.rules.newPasswordMinLength = function(value) {
    var currentPassValue = currentPassElement.length > 0 ? currentPassElement.val() : undefined;
    if(currentPassValue === undefined || currentPassValue.length === 0) {
      return true;
    }
    return value.length >= 6;
  };

  $.fn.form.settings.rules.newPasswordDifferent = function(value) {
    var currentPassValue = currentPassElement.length > 0 ? currentPassElement.val() : undefined;
    if(currentPassValue === undefined || currentPassValue.length === 0) {
      return true;
    }
    return value.toString() !== currentPassValue.toString();
  };

  $.fn.form.settings.rules.repeatPasswordMatch = function(value) {
    var currentPassValue = currentPassElement.length > 0 ? currentPassElement.val() : undefined,
        newPassValue = newPassElement.length > 0 ? newPassElement.val() : undefined;
    if(currentPassValue === undefined || currentPassValue.length === 0) {
      return true;
    }
    return value.toString() === newPassValue.toString();
  };

Here is the semantic ui source file他们定义默认规则/提示/等。它是一个很好的参考,还展示了如何在提示符中显示值等。