我正在使用jQuery Validation plugin(JVP)通過ajax執行服務器端驗證。除了一件事之外,一切都可以正常工作:JVP無法執行空白字段的遠程驗證。從async ajax請求返回值到jQuery驗證插件所需的方法
我不介意使用其默認規則required: true
來進行具有簡單出現驗證的屬性。但是有時我的模型中有複雜的邏輯,我想保留在服務器端。
所以問題:我不能強制JVP通過他的內置遠程ajax方法來驗證空白字段。不過,我可以在他required
方法使用功能(該功能應該得到真或假的結果):
required: function(element) {
return true_or_false;
}
所以我決定用這個函數內部異步Ajax請求,但我不能返回從AJAX異步的價值呼叫。我試圖使用回調,但無法使其工作,我堅持這個問題。這裏是我的代碼(CoffeeScript的):
validate_url = '/emails/validate'
required_validate = (e, callback) ->
data = {}
data[e.name] = $(e).val()
$.ajax(
url: validate_url
type: 'post'
dataType: 'json'
data: data
success: (response) ->
callback(response)
)
$('#my_form').validate(
rules:
'email[email]':
required: (element) ->
required_validate(element, (response) ->
if response == true || response == "true"
false
else
true
)
)
我檢查了所有數據,即進入到服務器並從它的響應 - 這是確定。 JVP的方法required
不等待響應,並且一直得到true
的問題。我怎樣才能返回他從success
ajax請求的價值?
響應是'真',我用斷點檢查'if response == true || response ==「true」'是'true'並且函數返回'false',但是已經太遲了''required'方法已經'true' –
你是什麼意思「驗證空白字段」?你想要一個空白字段?如果它是空白的,爲什麼你需要服務器告訴你這個? – Sparky