0

我目前正在研究 taiga 的自定义实现,我注意到,即使我们为自定义输入字段放置了一个模式,app/partials/custom-attributes/custom-attribute-value-edit.jade如果输入不遵循指定的模式,则 ping 一个错误,像这样

input#custom-field-value(name="value", type="tel", pattern="^\\+\\d{1,3}\\s\\d{1,3}\\s\\d{3}\\s\\d{4}$", placeholder="format: +[country_code] [area_code] [xxx] [xxxx] (e.g: +1 234 567 8910)", value!="<%- value %>")

表单仍然提交到后端。尽管我确实看到一条快速消息说模式不匹配,但仍提交了表单。我追踪过程最远的是这个文件 app/coffee/modules/common/custom-field-values.coffee

有一个部分用于处理提交

    submit = debounce 2000, (event) =>
        event.preventDefault()

        form = $el.find("form").checksley()
        return if not form.validate()

        input = $el.find("input[name=value], textarea[name='value'], select[name='value']")
        attributeValue.value = input.val()
        if input.prop("type") == 'checkbox'
            if input[0].checkValidity()
                attributeValue.value = !!input.prop("checked")

但这就是我所得到的。我的目标是如果存在输入验证问题(例如输入未遵循指定模式),则不允许提交。我正在使用当前版本的 taiga 3.0.0

4

1 回答 1

1

我最终想通了。Taiga 使用 checkley 进行表单验证。我没有像普通输入字段验证器那样对我的正则表达式使用“模式”,而是使用了 checksley 的属性 data-regexp。这处理了我需要的验证。

input#custom-field-value(name="value", type="tel", data-regexp="^\\+\\d{1,3}\\s\\d{1,3}\\s\\d{3}\\s\\d{4}$", placeholder="format: +[country_code] [area_code] [xxx] [xxxx] (e.g: +1 234 567 8910)", value!="<%- value %>")

该文档可以在以下链接中找到

https://media.readthedocs.org/pdf/checksley/latest/checksley.pdf

于 2016-11-10T03:52:40.800 回答