jQuery Mobile Framework - Form Tutorial
() translation by (you can also view the original English article)
jQuery Mobile adalah Framework mobile web yang relatif baru, dengan rilis pertama yang dibuat pada bulan Oktober 2010. Framework memiliki banyak fitur yang menarik untuk mendukung pengembangan aplikasi mobile berbasis web. Dalam tutorial ini, kita akan fokus pada beberapa elemen dasar jQuery Mobile: struktur halaman, form dan Ajax submit. Tutorial ini didasarkan pada versi 1.0 alpha release 2 dari jQuery Mobile Framework.
Sebagai bagian dari tutorial kita akan menulis aplikasi B2C kecil. Paket pengiriman perusahaan memiliki form di situs web mereka untuk pelanggan memasukkan informasi pada paket yang hilang atau rusak selama pengiriman. Menggunakan perangkat genggam (misalnya web memungkinkan telepon) pelanggan input informasi ke form tentang klaim mereka: nomor pengiriman dari penerimaan asli, nama/alamat dan deskripsi kerugian/kerusakan. Ketika kustomer submit form, situs web merespon dengan id klaim untuk melacak lebih jauh. Skenario ditunjukkan pada diagram berikut:



jQuery Mobile Framework mendukung berbagai macam browser termasuk perangkat iOS, perangkat Android , Blackberry OS 6, dan webOS (untuk matriks dukungan, lihat http://jquerymobile.com/gbs/). Aplikasi dalam tutorial ini telah diuji terhadap perangkat Android 2.2 dan perangkat iOS 4.1.
Pertimbangan desain
Sebelum masuk ke rincian teknis, mari kita bicara tentang pertimbangan utama desain aplikasi.
- waktu respon pendek: sangat disukai untuk aplikasi web yang berisi halaman html tunggal dengan antarmuka pengguna yang sederhana. Semua konstruksi antarmuka pengguna, seperti halaman error dialog dan konfirmasi, akan menjadi bagian dari halaman html. Setelah halaman download ke browser, Bagian yang berbeda dari halaman yang akan ditampilkan kepada pengguna tergantung pada konteks tertentu. Akan ada tidak perlu membuka beberapa sambungan jaringan untuk men-download halaman beberapa kali.
- Penanganan Kesalahan: jika pengguna lupa untuk memasukkan bidang yang dibutuhkan, pengajuan harus gagal dengan dialog peringatan. Bidang yang hilang harus mudah bagi pengguna untuk menemukan.
- Dukungan untuk beberapa perangkat/browser: aplikasi harus konsisten tampilan dan nuansa dan perilaku di perangkat yang didukung dan browser.
Tentu saja, real-life aplikasi yang khas akan memiliki keinginan tambahan atau yang desain yang berbeda. Untuk tujuan dari tutorial ini, lingkup kami akan terbatas pada pertimbangan-pertimbangan di atas.
Pengenalan jQuery Mobile
Sebagian besar diskusi dalam bagian ini yang telah dipinjam dari dokumentasi di http://jquerymobile.com. Lihat referensi asli untuk rincian lebih lanjut.
jQuery Mobile adalah sistem antarmuka pengguna yang dibangun di atas framework JavaScript populer jQuery. Terdiri dari elemen antarmuka pengguna dan pemrograman konstruksi yang menyediakan fungsionalitas yang konsisten di seluruh berbagai macam browser web ponsel dan komputer. Prinsip-prinsip 'Peningkatan progresif' dan 'Degradasi yang Anggun' berada di balik desain. Fungsionalitas inti dari framework mendukung serangkaian luas platform sedangkan platform baru manfaat dari fitur-fitur yang lebih ditingkatkan.
jQuery Mobile memiliki footprint yang relatif kecil. Sejak konfigurasi dasar dari halaman Mobile jQuery dilakukan murni dengan markup, mungkin untuk mencapai siklus perkembangan cepat, terutama jika aplikasi Anda tidak memerlukan fungsi pemrograman yang rumit. Meskipun dibangun di atas jQuery core, sistem tema jQuery Mobile didasarkan pada framework CSS baru yang bertujuan untuk memisahkan warna dan tekstur dari style struktural yang mendefinisikan sesuatu seperti padding dan dimensi. event handling API menangani sentuhan, mouse, dan kursor pengguna berbasis fokus metode masukan dengan cara bersatu.
jQuery Mobile datang dengan out the box dengan banyak elemen antarmuka pengguna seperti header dan footer Toolbar, tombol dengan ikon, element form (termasuk slider sensitif sentuhan dan toggle switch) dan daftar. style HTML dasar, dua atau tiga kolom grid dan dilipat elemen juga disediakan.
Dimasukkannya jQuery Mobile Perpustakaan
Pada rilis alpha 2 jQuery Mobile 1.0, berikut stylesheet dan perpustakaan JavaScript harus dimasukkan dalam halaman HTML Anda. Anda dapat referensi mereka sebagai berikut atau melayani mereka dari server Anda sendiri:
1 |
|
2 |
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a2/jquery.mobile-1.0a2.min.css" /> |
3 |
<script src="http://code.jquery.com/jquery-1.4.4.min.js"></script> |
4 |
<script src="http://code.jquery.com/mobile/1.0a2/jquery.mobile-1.0a2.min.js"></script> |
Wadah dan halaman konten
Mari kita memperkenalkan struktur dasar dari sebuah halaman dalam jQuery Mobile. Halaman dalam jQuery Mobile framework dapat satu halaman atau lokal terkait 'Halaman internal' dalam halaman. Halaman 'wadah' yang akan mencakup satu atau lebih halaman 'isi'. Batas halaman wadah didefinisikan sebagai berikut:
1 |
|
2 |
<div data-role="page"> |
3 |
... |
4 |
</div>
|
Perhatikan bahwa nilai dari atribut data-role
adalah page
. Di sisi lain, batas halaman konten didefinisikan sebagai berikut:
1 |
|
2 |
<div data-role="content"> |
3 |
... |
4 |
</div>
|
Perhatikan bahwa nilai dari atribut data-role
adalah content
.
Halaman konten mungkin memiliki terkait header dan footer. Sebagai contoh, sebuah halaman wadah dengan beberapa konten halaman dapat memiliki struktur sebagai berikut:
1 |
|
2 |
<div data-role="page"> |
3 |
|
4 |
<div data-role="header">...</div> |
5 |
<div id="contentWithHeaderAndFooter1" data-role="content">...</div> |
6 |
<div data-role="footer">...</div> |
7 |
|
8 |
<div data-role="header">...</div> |
9 |
<div id="contentWithHeaderAndFooter2" data-role="content">...</div> |
10 |
<div data-role="footer">...</div> |
11 |
|
12 |
<div id="contentWithNoHeaderAndFooter" data-role="content">...</div> |
13 |
|
14 |
</div>
|
Ketika sebuah wadah halaman dimuat, semua halaman konten di dalamnya akan terlihat. Dalam aplikasi kita, kita perlu untuk menampilkan konten hanya satu pada satu waktu. Oleh karena itu, kita perlu pemrograman mengendalikan konten yang akan ditampilkan tergantung pada konteks.
Menyembunyikan/menampilkan konten halaman
Untuk menyembunyikan elemen, menggunakan jQuery Mobile API hide()
fungsi:
1 |
|
2 |
$('#hdrMain').hide(); |
akan menyembunyikan header dengan id
hdrMain
. Di sini, kami menggunakan jQuery ID selector denga memasukan id
dari elemen yang kami ingin pilih didahului dengan tanda #
. Sebaliknya, fungsi show()
menunjukkan sebuah elemen tersembunyi:
1 |
|
2 |
$('#hdrMain').show(); |
Fungsi hide()
dan show()
yang berlaku untuk elemen dari berbagai jenis, khususnya,<div>
Tag dan anchor (<a>
tag). Dalam tutorial ini, kita akan menggunakan fungsi hide()
dan show()
secara ekstensif untuk menampilkan hanya konteks relevan kepada pengguna aplikasi. Selengkapnya diberikan di bawah ini.
Langkah 1: Struktur halaman aplikasi Demo
Aplikasi demo kami terdiri dari halaman html tunggal, index.html
, yang terdiri dari sebuah halaman wadah seperti yang ditunjukkan di bawah ini:
1 |
|
2 |
<div data-role="page" data-theme="b" id="page1"> |
3 |
|
4 |
<!-- ====== main content starts here ===== -->
|
5 |
<div data-role="header" id="hdrMain" name="hdrMain" data-nobackbtn="true">...</div> |
6 |
<div data-role="content" id="contentMain" name="contentMain"> |
7 |
... |
8 |
</div>
|
9 |
<div data-role="footer" id="ftrMain" name="ftrMain"></div> |
10 |
<!-- ====== main content ends here ===== -->
|
11 |
|
12 |
<!-- ====== dialog content starts here ===== -->
|
13 |
<div align="CENTER" data-role="content" id="contentDialog" name="contentDialog"> |
14 |
... |
15 |
</div>
|
16 |
<!-- ====== dialog content ends here ===== -->
|
17 |
|
18 |
<!-- ====== transition content page starts here ===== -->
|
19 |
<div data-role="content" id="contentTransition" name="contentTransition"> |
20 |
... |
21 |
</div>
|
22 |
<!-- ====== transition content ends here ===== -->
|
23 |
|
24 |
<!-- ====== confirmation content starts here ===== -->
|
25 |
<div data-role="header" id="hdrConfirmation" name="hdrConfirmation" data-nobackbtn="true">...</div> |
26 |
<div data-role="content" id="contentConfirmation" name="contentConfirmation" align="center"> |
27 |
... |
28 |
</div>
|
29 |
<div data-role="footer" id="ftrConfirmation" name="ftrConfirmation"></div> |
30 |
<!-- ====== confirmation content ends here ===== -->
|
31 |
... |
32 |
</div><!-- page1 --> |
- Konten utama berisi form diisi oleh pengguna dan memiliki header dan footer.
- Dialog konten yang ditampilkan hanya jika bidang diperlukan form hilang ketika form dikirimkan. Terdiri dari peringatan dan tombol OK untuk menutup dialog. Perhatikan bahwa tidak ada header atau footer.
- Transisi isi ditampilkan setelah form dikirimkan sampai respon yang diterima dari server. Ini terdiri dari sebuah gambar "spinner" dengan teks singkat yang menginformasikan pengguna bahwa form mereka sedang disampaikan. Transisi isi juga tidak memiliki header atau footer.
- Konfirmasi konten yang ditampilkan setelah response yang diterima dari server. Ini akan menampilkan nomor konfirmasi ke pengguna. Isi konfirmasi memiliki header dan footer.
Transisi konten yang ditampilkan dalam diagram di bawah ini:



Tambahan pengamatan pada kode kode di atas:
- Atribut
data-theme
memungkinkan kita untuk memilih dari style yang tersedia dalam jQuery Mobile Framewpork:<div data-role="page" data-theme="b" id="page1"
>. Tema default memiliki berbagai warna Swatch bernamaa, b, c, d, e
, masing-masing menyediakan seperangkat konsisten warna untuk elemen yang berbeda di halaman. Untuk aplikasi kami kami memilih warna sesuai denganb
. - Header dilengkapi dengan tombol kembali. jika tidak perlu tombol kembali dan oleh karena itu memilih untuk menyembunyikan mereka melalui
data-nobackbtn = "true"
. - Hal ini dimungkinkan untuk menyediakan beberapa teks yang akan ditampilkan di footer antara
<div>
Tag. Di aplikasi kita kita dihilangkan teks di footer.</div> Sebagai hasilnya, pengguna akan melihat di footer hanya bar tipis berwarna yang sama sebagai header. Dengan teks, footer akan memiliki ketinggian serupa sebagai footer dengan teks di dalamnya.
Elemen form
Form klaim terdiri dari bidang-bidang berikut:
- Beberapa
input
field jenis teks: pengiriman nomor, nama pertama, nama akhir, Email, telepon, alamat jalan, kode pos dan kota. Semua kolom yang harus diisi kecuali telepon. - Sebuah
select
elemen untuk state. Ini adalah bidang yang diperlukan. - Elemen
textarea
bagi pengguna untuk memasukkan informasi mengenai pengiriman hilang atau rusak. Ini adalah bidang yang diperlukan.
Sebagai contoh, mari kita lihat pada bidang teks untuk pengiriman nomor:
1 |
|
2 |
<div id="shipDiv" data-role="fieldcontain"> |
3 |
<label for="shipNo">Shipping number*</label> |
4 |
<input id="shipNo" name="shipNo_r" type="text" /> |
5 |
</div>
|
Kami menggunakan label
dengan for
atribut yang nilainya adalah sama dengan id
dari elemen input
label
yang melekat. Selain itu, kami bungkus label
dan input
dalam div
dengan atribut data-role
dihargai sebagai fieldcontain
. jQuery Mobile Framework akan menggunakan nilai atribut fieldcontain
untuk styling khusus. Selain itu, lihatlah name="shipNo_r"
. Untuk aplikasi khusus ini, kami memutuskan untuk menentukan nilai atribut name
dari setiap elemen bentuk diperlukan untuk nilai dari id
atribut ditambahkan oleh _r. Jika elemen tidak diperlukan, nilai atribut name
akan sama dengan nilai dari atribut id
. Misalnya, karena telepon tidak diisi, didefinisikan sebagai berikut:
1 |
|
2 |
<div id="phoneDiv" data-role="fieldcontain"> |
3 |
<label for="phone">Phone</label> |
4 |
<input id="phone" name="phone" type="text"/> |
5 |
</div>
|
Seperti yang kita akan lihat nanti, konvensi penamaan ini khusus akan membantu kita mendeteksi bidang hilang selama pengiriman form.
Elemen penting fprm lain adalah elemen select
. Serupa dengan yang di atas, nilai for
atribut adalah sama dengan id dari elemen select
label
yang melekat. Juga, label
dan select
yang dibungkus dalam sebuah div
dengan nilai atribut data-role
sebagai fieldcontain
. Dengan daftar panjang pilihan yang kita miliki dalam aplikasi ini, jQuery Mobile Framework akan membuka daftar di halaman baru ketika pengguna berfokus pada select
elemen.
1 |
|
2 |
<div id="stateDiv" data-role="fieldcontain"> |
3 |
<label id="stateLabel" for="state">State*</label> |
4 |
<select id="state" name="state_r" tabindex="2"> |
5 |
<option value="ZZ">Please select a state</option> |
6 |
<option value="AL">Alabama</option> |
7 |
<option value="AK">Alaska</option> |
8 |
<option value="AZ">Arizona</option> |
9 |
... |
10 |
</select>
|
11 |
</div>
|
Halaman form yang tampil pada telepon Android 2.2 yang ditunjukkan di bawah. Pengguna akan menggulir halaman untuk mengakses elemen dalam form:



Form yang sama ditampilkan dalam iPod touch menjalankan iOS 4.1:



Langkah 2: Definisi Variable
Kita akan referensi berbagai elemen dalam halaman html seluruh kode kita. Masuk akal untuk menentukan referensi tersebut hanya sekali dan menggunakan kembali yang diperlukan. Untuk alasan ini, kita mendeklarasikan variabel global digunakan serta konstanta di bagian head
Halaman:
1 |
|
2 |
<script> |
3 |
// Global declarations - assignments made in $(document).ready() below
|
4 |
var hdrMainvar = null; |
5 |
var contentMainVar = null; |
6 |
var ftrMainVar = null; |
7 |
var contentTransitionVar = null; |
8 |
var stateLabelVar = null; |
9 |
var whatLabelVar = null; |
10 |
var stateVar = null; |
11 |
var whatVar = null; |
12 |
var form1var = null; |
13 |
var confirmationVar = null; |
14 |
var contentDialogVar = null; |
15 |
var hdrConfirmationVar = null; |
16 |
var contentConfirmationVar = null; |
17 |
var ftrConfirmationVar = null; |
18 |
var inputMapVar = null; |
19 |
|
20 |
// Constants
|
21 |
var MISSING = "missing"; |
22 |
var EMPTY = ""; |
23 |
var NO_STATE = "ZZ"; |
24 |
</script> |
assingmen dari variabel-variabel yang dilakukan di jQuery $(document).ready()
fungsi menggunakan ID selector, seperti ditunjukkan di bawah. (Ingat bahwa jQuery $(document).ready(
) fungsi yang dipanggil ketika DOM seluruh hirarki halaman dimuat. Fungsi adalah lokasi terbaik untuk menginisialisasi variabel kami.) Kita juga mendefinisikan inputMapVar
sebagai sebuah koleksi yang terdiri dari semua input
elemen dengan _r
dalam atribut name
mereka (fungsi ini memanggil $('input[name*="_r"]'
) memilih semua elemen tersebut).
1 |
|
2 |
<script> |
3 |
$(document).ready(function() { |
4 |
// Assign global variables
|
5 |
hdrMainVar = $('#hdrMain'); |
6 |
contentMainVar = $('#contentMain'); |
7 |
ftrMainVar = $('#ftrMain'); |
8 |
contentTransitionVar = $('#contentTransition'); |
9 |
stateLabelVar = $('#stateLabel'); |
10 |
whatLabelVar = $('#whatLabel'); |
11 |
stateVar = $('#state'); |
12 |
whatVar = $('#what'); |
13 |
form1Var = $('#form1'); |
14 |
confirmationVar = $('#confirmation'); |
15 |
contentDialogVar = $('#contentDialog'); |
16 |
hdrConfirmationVar = $('#hdrConfirmation'); |
17 |
contentConfirmationVar = $('#contentConfirmation'); |
18 |
ftrConfirmationVar = $('#ftrConfirmation'); |
19 |
inputMapVar = $('input[name*="_r"]'); |
20 |
...
|
21 |
});
|
22 |
...
|
23 |
</script> |
Langkah 3: Pemilihan konten fungsi
Sekarang mari kita perhatikan fungsi-fungsi pemilihan konten yang akan dipanggil oleh event handler.
Untuk menyembunyikan dan menampilkan isi utama dan dengan header/footer, kita menggunakan hideMain()
dan showMain()
fungsi:
1 |
|
2 |
function hideMain(){ |
3 |
hdrMainVar.hide(); |
4 |
contentMainVar.hide(); |
5 |
ftrMainVar.hide(); |
6 |
}
|
7 |
|
8 |
function showMain(){ |
9 |
hdrMainVar.show(); |
10 |
contentMainVar.show(); |
11 |
ftrMainVar.show(); |
12 |
}
|
Untuk menyembunyikan dan menampilkan isi transisi, kita menggunakan hideContentTransition()
dan showContentTransition()
fungsi:
1 |
|
2 |
function hideContentTransition(){ |
3 |
contentTransitionVar.hide(); |
4 |
}
|
5 |
|
6 |
function showContentTransition(){ |
7 |
contentTransitionVar.show(); |
8 |
}
|
Untuk menyembunyikan dan menampilkan isi Dialog, kita menggunakan hideContentDialog()
dan showContentDialog()
fungsi:
1 |
|
2 |
function hideContentDialog(){ |
3 |
contentDialogVar.hide(); |
4 |
}
|
5 |
|
6 |
function showContentDialog(){ |
7 |
contentDialogVar.show(); |
8 |
}
|
Akhirnya, untuk menyembunyikan dan menampilkan isi konfirmasi dan dengan header/footer, kita menggunakan hideConfirmation()
dan showConfirmation()
fungsi:
1 |
|
2 |
function hideConfirmation(){ |
3 |
hdrConfirmationVar.hide(); |
4 |
contentConfirmationVar.hide(); |
5 |
ftrConfirmationVar.hide(); |
6 |
}
|
7 |
|
8 |
function showConfirmation(){ |
9 |
hdrConfirmationVar.show(); |
10 |
contentConfirmationVar.show(); |
11 |
ftrConfirmationVar.show(); |
12 |
}
|
Ketika halaman dimuat, hanya konten utama harus ditampilkan. Untuk alasan ini, halaman konten lain disembunyikan:
1 |
|
2 |
<script> |
3 |
$(document).ready(function() { |
4 |
// Assign global variables
|
5 |
...
|
6 |
hideContentDialog(); |
7 |
hideContentTransition(); |
8 |
hideConfirmation(); |
9 |
});
|
10 |
...
|
11 |
</script> |
Kita akan membahas bagaimana untuk mengikat bersama-sama mereka fungsi pilihan konten dengan event handler di bawah ini.
Langkah 4: Pengiriman Form
Ketika user menekan tombol Kirim kita perlu untuk memvalidasi data form sebelum benar-benar mengirimkan form. Untuk menjaga hal-hal sederhana, kami hanya akan memeriksa jika semua yang diperlukan telah diberikan. Jika validasi form berhasil, kami menampilkan konten transisi yang terdiri dari gambar spinner dengan teks pendek menginformasikan pengguna bahwa form mereka sedang dikirimkan. Jika validasi gagal, kami menampilkan konten dialog yang terdiri dari peringatan dan tombol OK untuk menutup dialog.
Validasi form
Label daro form elemen dengan data yang hilang akan disorot dalam warna merah. Untuk tujuan ini, kami menambahkan class stye baru bernama missing dan memperluas jQuery Mobile label
class.
1 |
|
2 |
label.missing { |
3 |
color:#FF0000; |
4 |
font-weight:bold; |
5 |
}
|
Dibawah ini adalah event handler untuk pengiriman form. Dalam notasi khas jQuery, pengidentifikasi untuk form1
dimasukan ke panggilan objek jQuery untuk menangani submit event:
1 |
|
2 |
$('#form1').submit(function() { |
3 |
var err = false; |
4 |
// Hide the Main content
|
5 |
hideMain(); |
6 |
|
7 |
// Reset the previously highlighted form elements
|
8 |
stateLabelVar.removeClass(MISSING); |
9 |
whatLabelVar.removeClass(MISSING); |
10 |
inputMapVar.each(function(index){ |
11 |
$(this).prev().removeClass(MISSING); |
12 |
});
|
13 |
|
14 |
// Perform form validation
|
15 |
inputMapVar.each(function(index){ |
16 |
if($(this).val()==null || $(this).val()==EMPTY){ |
17 |
$(this).prev().addClass(MISSING); |
18 |
err = true; |
19 |
}
|
20 |
});
|
21 |
if(stateVar.val()==NO_STATE){ |
22 |
stateLabelVar.addClass(MISSING); |
23 |
err = true; |
24 |
}
|
25 |
if(whatVar.val()==null||whatVar.val()==EMPTY){ |
26 |
whatLabelVar.addClass(MISSING); |
27 |
err = true; |
28 |
}
|
29 |
|
30 |
// If validation fails, show Dialog content
|
31 |
if(err == true){ |
32 |
showContentDialog(); |
33 |
return false; |
34 |
}
|
35 |
|
36 |
// If validation passes, show Transition content
|
37 |
showContentTransition(); |
38 |
|
39 |
// Submit the form
|
40 |
$.post("/forms/requestProcessor.php", form1Var.serialize(), function(data){ |
41 |
confirmationVar.text(data); |
42 |
hideContentTransition(); |
43 |
showConfirmation(); |
44 |
});
|
45 |
return false; |
46 |
});
|
Kami mengatur sebuah error flag false
dan menyembunyikan konten utama yang berisi form. Kami kemudian reset ulang label sebelumnya yang telah disorot pada masing-masing anggota inputMapVar
koleksi. Untuk melakukan itu, kami memasukan sebuah fungsi inline sebagai argumen untuk each()
yang hanya berisi $(this).prev().removeClass(MISSING);.
Perhatikan bahwa this
adalah elemen input
dipilih dan prev()
mengembalikan simbling sebelumnya yang langsung yang adalah label
terkait dengan itu.
state
untuk pilihan stae dan untuk apa
klaim Deskripsi bukan text Field. Karenanya, label yang sesuai memiliki style reset secara terpisah.
Setelah semua label sebelumnya telah disorot ulang kita kembali elemen-elemen input
yang diperlukan untuk memeriksa jika salah satu dari mereka memiliki nilai yang hilang. Jika itu adalah kasus kita tambahkan class hilang dengan label yang terkait dengan input field:
1 |
|
2 |
// Perform form validation
|
3 |
inputMapVar.each(function(index){ |
4 |
if($(this).val()==null || $(this).val()==EMPTY){ |
5 |
$(this).prev().addClass(MISSING); |
6 |
err = true; |
7 |
}
|
8 |
});
|
9 |
if(stateVar.val()==NO_STATE){ |
10 |
stateLabelVar.addClass(MISSING); |
11 |
err = true; |
12 |
}
|
13 |
if(whatVar.val()==null||whatVar.val()==EMPTY){ |
14 |
whatLabelVar.addClass(MISSING); |
15 |
err = true; |
16 |
}
|
Selain itu, error flag diatur ke true dan dialog kesalahan ditampilkan. Gambar di bawah menunjukkan kesalahan dialog dalam ponsel Android 2.2 kami:



Setelah pengguna menekan tombol OK, pengguna ditampilkan halaman form dengan bidang hilang yang disorot, seperti yang ditunjukkan di bawah ini. Dalam gambar itu, orientasi layar telepon horisontal. Mengamati bahwa tiap label dan field teks sibling yang ditampilkan dalam satu baris bertentangan dengan orientasi vertikal pada gambar 3 mana label ini di atas bidang teks.



Di sisi lain, jika validasi berhasil kami menampilkan konten transisi dan mengirimkan form seperti yang dibahas di bawah ini.
Submit Form melalui Ajax
Pada form submit jQuery Mobile post
fungsi yang menerima tiga argumen:
1 |
|
2 |
$.post("/forms/requestProcessor.php", form1Var.serialize(), function(data){...}); |
- Argumen pertama adalah server URL untuk submit form.
- Yang kedua adalah form konten untuk di submit. Untuk mendapatkan form konten, kita cukup memanggil
serialize()
pada objek jQuery memasukan pengidentifikasi untuk form. - Argumen ketiga adalah fungsi in-line untuk memproses respon,
data
dikirim kembali dari server.
Dicatat bahwa fungsi post
melakukan panggilan Ajax yang asynchronous secara alami. Segera setelah memanggil post
, pelaksanaan program akan terus dengan mengembalikan false dari fungsi submit
dan pengguna akan mulai melihat konten transisi.



Fungsi in-line untuk memproses respon hanya dijalankan ketika server mengembalikan respon. Untuk Kesederhanaan, aplikasi server pengolahan data form, requestProcessor.php
, mengembalikan klaim hard-code id untuk pengguna yang menggunakan untuk referensi di masa mendatang. Sebelum mengirimkan klaim id requestProcessor.php
, itu sleep selama 4 detik untuk meniru waktu pengolahan server. Hal ini di periode ini bahwa aplikasi akan menampilkan konten transisi.
1 |
|
2 |
<?php
|
3 |
usleep(4000000); |
4 |
|
5 |
echo('FTREIK12345678'); |
6 |
?>
|
Ketika menerima respon server, event handler kode dijalankan. Langkah pertama adalah untuk mengisi tag span
bernama confirmation
dengan nilai kembali dari server. Hal ini dilakukan dengan:
1 |
|
2 |
confirmationVar.text(data); |
Kemudian, kita menyembunyikan konten transisi dan menampilkan konten konfirmasi yang berisi tag span
bernama confirmation
:
1 |
|
2 |
<div data-role="content" id="contentConfirmation" name="contentConfirmation" align="center"> |
3 |
<p>A new claim has been created based on data you have submitted.</p> |
4 |
<p>Your confirmation number is: <span id="confirmation" name="confirmation"></span> </p> |
5 |
</div>
|
Halaman konfirmasi yang ditampilkan di ponsel Android 2.2 kami ditampilkan di bawah (telepon orientasi horisontal):



Halaman konfirmasi yang sama ditampilkan pada iPod touch sebagai berikut (orientasi vertikal):

Deploy kode sumber
Kode sumber untuk tutorial memiliki struktur folder yang sederhana. Semua resource yang disimpan dalam folder bernama forms
. Dalam folder itu, ada dua sub folder, css
dan img
. css
folder berisi colors.css
, yang memiliki v;sdd label.missing
, dan img
menyimpan wait.gif
, gambar spinner. File index.html
dan requestProcessor.php
berada langsung di bawah folder forms
. Dalam pengujian kami, kami menggunakan Apache web server dengan versi 2.2.11 menjalankan PHP versi 5.3.0. Jika Anda menempatkan folder forms
langsung di bawah DocumentRoot
web server, Anda dapat mengakses aplikasi melalui http://[your_host_name]/folder/index.html.
Kesimpulan
Dalam tutorial ini kami memperkenalkan konsep dasar dari jQuery Mobile Framework dengan fokus pada struktur halaman, dasar styling, elemen form dan pengiriman form Ajax. Sampel klaim pengolahan aplikasi diperkenalkan untuk menunjukkan konsep-konsep tersebut. Kami menyediakan screenshot dari berbagai halaman melaksanakan aplikasi di ponsel Android 2.2 dan iPod touch perangkat dengan iOS 4.1. Beberapa pengamatan dan pidato penutupan diberikan di bawah ini:
- Framework jQuery Mobile dibangun pada jQuery core, mereka yang memiliki pengetahuan sebelumnya dari jQuery Framework bisa mendapatkan sampai dengan kecepatan dengan jQuery Mobile Framework dengan mudah.
- Kemampuan framework untuk mewakili beberapa konten halaman dalam halaman html tunggal dengan built-in fungsi untuk menampilkan/menyembunyikan halaman konten tersebut muncul sangat nyaman untuk menciptakan sebuah form aplikasi dengan view yang berbeda tergantung pada state. Misalnya, teknik ini dapat diterapkan untuk menerapkan 'wizard' style panduan pengguna atau form multi-halaman survei.
- Diuji pada desktop, Android 2.2, dan iOS 4.1 platform, baik tampilan dan nuansa dan fungsional aspek contoh aplikasi yang konsisten. Selama pengembangan, itu harus mungkin untuk cepat menguji dan debug aspek utama dari jQuery Mobile Application platform desktop. Kemudian, lebih banyak pengujian dapat dilakukan pada perangkat individu dan browser yang aplikasi diharapkan untuk didukung.