我正在尝试设置validval插件(最新版本4.0.0)并且没有任何运气......
以下是 HTML
中的内容<form name="LoginForm" id="LoginForm" data-transition="slide" action="somepage.html" method="post">
// ... text inputs
<input type="submit" id="CheckLogin" name="CheckLogin" value="Login" data-theme="e" />
</form>
Jquery :
// tried pageinit and pageshow
$('div:jqmData(role="page")').live('pageshow', function() {
$(this).find('form').each(function() {
// call once
if ( $(this).find('.required').length > 0 && $(this).attr('valed') != 'on') {
// flag and validVal
$(this).attr('valed', 'on').validVal({
'validate': { 'onBlur': false },
'customValidations': { },
'form': {
'onValid': function( $form, language ) {
console.log("form ok");
},
'onInvalid': function( $form, language ) {
console.log("form not ok");
// attach an error to form
$(this).attr('error', 'yes');
}
}
});
}
});
这应该在pageshow上设置表单验证。
现在我绑定了提交按钮:
$("#CheckLogin").click( function(event) {
event.preventDefault();
// call validval
// DOES NOT WORK, cause validval() doesn't fire like this
var errors = $("#CheckLogin").triggerHandler( "submitForm.vv" );
console.log( errors );
// alternative, check for attached errors
// DOES NOT WORK, cause validval() doesn't fire on click
// ... my routine running if there are no errors
// Submit
// document.LoginForm.submit()
});
问题是如果我绑定提交,验证工作,但无论validval说什么,表单总是立即提交。所以我现在绑定到click并希望“手动”解雇我的例行程序。这意味着我还需要使用 triggerhandler 来激活validval - 至少它会在website上执行此操作。问题是,validval不会像这样开火。我不知道为什么?
问题:
如何从我的click-handler中触发validVal()表单验证?或者,如果我改回绑定提交,我怎样才能确保表单不会自动提交到遗忘?
希望信息充足&amp;非常感谢您的帮助!
答案 0 :(得分:2)
确定。自己找到它...总是发生在Stackoverflow上做了很长的帖子......
您需要将 triggerhandler 替换为简单的触发器,然后才会触发validval。您可以激活 submitForm 事件(在v4.0.0中折旧)或 submitForm.vv 事件,这似乎是要调用的正确事件。
也许对其他人有帮助。