簡體   English   中英

使用 Livewire 和 AlpineJs 在 Laravel 項目上驗證錯誤后聚焦一個字段

[英]Focus a field after validation error on Laravel project with Livewire and AlpineJs

您好,我需要關注 ErrorBag 的第一個字段,我正在使用 Livewire 組件表單,因為 Livewire 發送 XHR 請求每個輸入更改以更新 DOM,所以每次都將關注 XHR 響應而不提交表單,這不是我需要的,我我也在同一個項目中使用 Alpine Js,我想用 Javascript 聚焦它,但我不知道是否可以觀察屬性更改。

function app(){

return {

    errorBag: {!! json_encode(array_keys($errors->getMessages())) !!},
    

    focusField()
    {
     if(this.errorBag.length > 0)
      {
        fieldError = Array.from(document.getElementsByName(errorBag[0]));
        fieldError[0].focus({preventScroll:false});
      }
    }
}

}

在示例中,我想用 x-data="app()" 初始化 Alpine 組件,然后我想觸發 focusField() 函數,如果 errorBag 屬性僅在每次提交表單無效的字段時才更改為焦點。 謝謝你的幫助

解決了我自己

          <div
            x-data="
            { 
              'errors': {{ json_encode(array_keys($errors->getMessages())) }},
              focusField(input){
                  fieldError = Array.from(document.getElementsByName(input));
                  if(fieldError.length > 0){
                    fieldError[0].focus({preventScroll:false});
                  }
              },
            }
            "
            x-init="() => { $watch('errors', value => focusField(value[0])) }"
        >
        </div>

函數 app() 中的屬性沒有更新,但在 x-data 對象中它工作得很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM