我正在学习jQuery Mobile构建最简单的单页模板应用程序:主页和一个小形式。 在这种形式中,我有一个我想要的文本字段。
这是我到表单页面的链接:
<a href="form.html">Form</a>
在表单页面中,我拥有所有关键元素:jquery验证插件(当然还有jquery),验证脚本,必填字段和提交按钮:
<script type="text/javascript" src="js/jquery.validate.min.js"></script>
<script>
$(document).ready(function(){
$("#field").validate();
});
</script>
<input type="text" id="field" name="field" class="required" required>
<input id="submit" class="submit" type="submit" value="Inserisci" data-theme="a"/>
如果我使用普通链接进入表单页面,则不会进行验证(简单页面重新加载,因为我的表单操作尚未设置)。 如果我将表单链接更改为:
<a href="form.html" data-ajax=false>Form</a>
验证有效并告诉我在必填字段中插入我的数据。 但是,即使插入数据,它也会继续要求我插入它而不提交表格。
我真的无法理解我做错了什么......
在第一个建议之后我一直在阅读并且我已经使用这个示例更新了我的代码:http://jquery.bassistance.de/validate/demo/jquerymobile.html现在的问题是我被迫刷新表单页面以查看验证是否有效。如果我在链接上使用data-ajax = false来引导我访问表单,那么验证总是完美无缺。
更新 为了确保一切都像“香草”一样,我从jquery文档中获取了主模板作为起始页面,我的index.html:
<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0-beta.1/jquery.mobile-1.3.0-beta.1.min.css" />
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0-beta.1/jquery.mobile-1.3.0-beta.1.min.js"></script>
</head>
<body>
<div data-role="page" id="cruscotto">
<div data-role="header" id="header">
<h1>page</h1>
</div><!-- /header -->
<div data-role="content">
<ul data-role="listview" data-inset="true" data-theme="a">
<li>
<a href="inserisci_clienti.html">Inserimento clienti</a>
</li>
<li>
<a href="ricerca_clienti.html">Ricerca clienti</a>
</li>
<li>
<a href="about.html">Gestione pagamenti</a>
</li>
</ul>
</div><!-- /content -->
<div data-role="footer" data-theme="a">
<div class="ui-bar">
<a href="" data-role="button" data-icon="arrow-u" data-theme="a" style="float:right;" class="returnTopAction">Torna su</a>
</div>
</div>
</div>
</body>
</html>
然后我从教程中获得了一个完美的工作表单,我的inserisci_clienti.html页面:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title> - jsFiddle demo</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0-beta.1/jquery.mobile-1.3.0-beta.1.min.css" />
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0-beta.1/jquery.mobile-1.3.0-beta.1.min.js"></script>
<style type='text/css'>
label.error {
color: red;
font-size: 16px;
font-weight: normal;
line-height: 1.4;
margin-top: 0.5em;
width: 100%;
float: none;
}
@media screen and (orientation: portrait){
label.error { margin-left: 0; display: block; }
}
@media screen and (orientation: landscape){
label.error { display: inline-block; margin-left: 22%; }
}
em { color: red; font-weight: bold; padding-right: .25em; }
</style>
<script type='text/javascript'>//<![CDATA[
$(window).load(function(){
$( "#frmLogin" ).validate({
submitHandler: function( form ) {
alert( "Call Login Action" );
}
});
});//]]>
</script>
</head>
<body>
<meta name="viewport" content="width=device-width, initial-scale=1">
<div data-role="page" id="login">
<div data-role="header">
<h1>Acme Corporation</h1>
</div>
<div data-role="content">
<form id="frmLogin" class="validate">
<div data-role="fieldcontain">
<label for="email"><em>* </em> Email: </label>
<input type="text" id="email" name="email"
class="required email" />
</div>
<div data-role="fieldcontain">
<label for="password"><em>* </em>Password: </label>
<input type="password" id="password" name="password"
class="required" />
</div>
<div class="ui-body ui-body-b">
<button class="btnLogin" type="submit"
data-theme="a">Login</button>
</div>
</form>
</div>
</div>
</body>
</html>
如果我在加载表单页面后重新加载表单页面,或者如果我在链接上放置数据-ajax = false或者rel =“external”导致表单丢失,则不用说它只能 jQuery动画) 我生气了:(
答案 0 :(得分:2)
在jQuery Mobile中正确使用jQuery.validate。
$(document).on('pageinit', function () {
$(form).validate({ // or form #id
rules: {
field: "required" // field name not #id and has class="required
},
submitHandler: function (form) {
alert('data submitted');
return false;
}
});
});
答案 1 :(得分:0)
验证应该应用于表单而不是输入中。请尝试以下操作:
<script type="text/javascript" src="js/jquery.validate.min.js"></script>
<script>
$(document).ready(function(){
$("#myForm").validate(); // applying the validation on myForm
});
</script>
<form id="myForm">
<input type="text" id="field" name="field" class="required" required>
<input id="submit" class="submit" type="submit" value="Inserisci" data-theme="a"/>
<form>