2016-09-24 67 views
0

我試圖在香菜中實現laravel的required_if驗證,我能夠成功應用它,但主要問題是顯示錯誤消息時。我已新增下列自定義的驗證 -如何應用條件錯誤消息?

window.Parsley.addValidator('lpyRequiredIf', { 
    validateString(value, requirement) { 
     const fieldValue = document.getElementsByName(requirement[0])[0].value; 
     if (requirement.indexOf(fieldValue) > -1) { 
      return value !== ''; 
     } 
     return true; 
    }, 
}); 

和我的輸入是這樣的 -

<input class="form-control form-control-solid placeholder-no-fix" type="password" autocomplete="off" placeholder="Password" name="password" data-parsley-lpy-required-if="[&quot;email&quot;,&quot;[email protected]&quot;,&quot;[email protected]&quot;]" data-parsley-lpy-required-if-message="The password field is required when email address is :value." data-parsley-validate-if-empty="" data-parsley-whitespace="trim" data-parsley-lpy-custom-message="The password field is required when email address is :value."> 

現在我想顯示的消息完全像它在laravel驗證所示。

這就是顯示 - 當電子郵件地址是

密碼字段是必需的:值。

而且我想展示 -

當電子郵件地址是[email protected]密碼字段是必需的。

任何人都可以建議我如何實現這一目標嗎?基本上我想用驗證失敗時輸入的電子郵件地址替換:值。

+0

你可以簡單地將錯誤顯示爲'當電子郵件地址爲'時需要輸入密碼字段'並附上輸入的值,我猜你會收到你的電子郵件 –

+0

@MehravishTemkar如何在自定義驗證器中完成?我可以在自定義驗證器中指定靜態消息,但不能指定變量。我有一個選項可以在每次驗證失敗時將其替換掉,但是在這個問題中我再次遇到了問題,我沒有得到自定義驗證中驗證失敗的字段。 (可能有多個字段使用此驗證) – Anik

+0

tbh我從來沒有使用香菜對不起.. idk爲什麼你downvoted,他們應該至少指定的原因..我希望你很快得到解決方案..會讓你知道,如果我得到什麼.. –

回答

0

我想通了它是如何做到的。我需要返回與第一個參數作爲我需要顯示自定義消息jQuery的承諾 -

window.Parsley.addValidator('lpyRequiredIf', { 
    validateString(value, ...requirement) { 
     let valid = true; 
     const formElement = $(requirement[requirement.length - 1].parent.$element); 
     const fieldToCheck = formElement.find(`[name= ${requirement[0]} ]`); 
     if (fieldToCheck.length !== 0) { 
      const fieldValue = fieldToCheck.val(); 
      const deferred = new $.Deferred(); 
      const baseErrorMessage = requirement[requirement.length - 1] 
            .domOptions.lpyRequiredIfMessage; 
      if (requirement.indexOf(fieldValue) > -1 && value === '') { 
       deferred.reject(baseErrorMessage.replace(':value', fieldValue)); 
      } else { 
       deferred.resolve(); 
      } 
      valid = deferred.promise(); 
     } 
     return valid; 
    }, 
}); 

在這裏,我返回自定義錯誤消息 -

deferred.reject(baseErrorMessage.replace(':值',fieldValue));

P.S. - 代碼是從問題編輯,因爲我需要它更精緻。