使用javascript格式化输入字段无法与form_widget一起使用

时间:2019-06-21 17:44:33

标签: javascript symfony formatting twig

我正在使用javascript格式化我的输入字段,但是没有用,我认为该错误是如何在我的小部件上调用函数的,我尝试了很多解决方案,但没有用。 我跟随这个例子:https://jsfiddle.net/alvinbunk/4bg6z1do/8/

这是我的输入字段:

  <div>{{ form_widget(form.lien, {'attr':{'class': 'form-control' ,'placeholder' :'Format xxxx-xxxx-xxxx-xxxx' ,'id':'form_lien','maxlength' : '19','onkeypress':'keyPressLien(event,"form_lien");'   }}) }}</div>

我的表单类型:

 add('lien', TextType::class, [
                'label' => 'lien',
                'label_attr'=>array('id'=>'lien','style'=> 'text-align :left')
            ])

这是我的脚本:

function keyPressLien(e, id) {
            var phone = document.getElementById(id);


            if (e.key !== "Backspace") {
                if (phone.value.length === 4) {
                    phone.value = phone.value + '-';
                }
                if (phone.value.length === 9) {
                    phone.value = phone.value + '-';
                }
                if (phone.value.length === 14) {
                    phone.value = phone.value + '-';
                }

            }
        }

更新:

此代码有效:

'onkeypress':'keyPressLienHindex(event,"'~form.lien.vars.id~'");

1 个答案:

答案 0 :(得分:0)

class Movies extends Component { constructor(props) { super(props); this.state = { movies: getMovies(), } } handleDelete = (movie) => { console.log(movie); } render() { return ( <MoviesList movies={this.state.movies} onClick={() => this.handleDelete(movie)} /> ); } }应该是输入的ID?如果是这样,通常不是。要么使用

form_lien

它将使用javascript功能确定输入元素的ID-假设它具有一个ID或使用

'onkeypress':'keyPressLien(event, this.id);'

使用id,Symfony的Form组件将其分配给表单,通常很少称为'onkeypress':'keyPressLien(event,"'~form.lien.vars.id~'");' ,除非表单类型实际上称为form_[fieldname](这可能是代码味道)。 / p>

但是,为什么不提供元素本身呢?

FormType

和功能:

'onkeypress':'keyPressLien(event, this);'
附带说明:您的代码似乎假设电话号码的格式。这些假设可能是有缺陷的,但也许没关系。