Saya memiliki halaman web dengan 3 formulir di atasnya. Tidak bersarang, hanya satu demi satu (mereka hampir identik, hanya satu variabel tersembunyi yang berbeda). Seorang pengguna hanya akan mengisi satu formulir, dan saya ingin memvalidasi / dll semua formulir hanya dengan satu skrip JS.
Jadi bagaimana, ketika pengguna mengklik tombol kirim dari formulir # 1, apakah saya membuat skrip js saya hanya berurusan dengan bidang di form1? Saya tahu itu ada hubungannya dengan $ (ini). Orangtua, tapi saya tidak yakin apa yang harus dilakukan dengan itu.
Skrip validasi saya (yang saya gunakan di tempat lain, hanya dengan satu bentuk) terlihat seperti ini:
$(document).ready(function(){
$("#submit").click(function(){
$(".error").hide();
var hasError = false;
var nameVal = $("#name").val();
if(nameVal == '') {
$("#name").after('Please enter your name.');
hasError = true;
}
if(hasError == false) {blah blah do all the processing stuff}
Jadi apakah saya perlu mengganti hal-hal seperti $ ("# name"). Val () dengan $ (this) .parents ('form'). Name.val ()? Atau ada cara yang lebih baik untuk melakukan ini?
Terima kasih!
var form = $(this).form
suka di Javascript normal:function onClick(button) { var form = button.form; }
???Saya menemukan jawaban ini ketika mencari cara menemukan bentuk elemen input. Saya ingin menambahkan catatan karena sekarang ada cara yang lebih baik daripada menggunakan:
Saya tidak yakin kapan ditambahkan ke jQuery tetapi metode terdekat () melakukan apa yang dibutuhkan lebih bersih daripada menggunakan orang tua (). Dengan kode terdekat dapat diubah menjadi ini:
Itu melintasi dan menemukan elemen pertama yang cocok dengan apa yang Anda cari dan berhenti di sana, jadi tidak perlu menentukan: pertama.
sumber
Untuk mendapatkan formulir yang diserahkan ada di dalam mengapa tidak adil
Jalur termudah & tercepat menuju hasilnya.
sumber
Saya menggunakan metode berikut & ini bekerja dengan baik untuk saya
$('#mybutton').closest("form")
melakukan trik untukku.sumber
Eileen: Tidak, tidak
var nameVal = form.inputname.val();
. Itu harus ...di jQuery:
Atau dalam JavaScript:
Atau kombinasi:
Dengan jQuery, Anda bahkan dapat mengulangi semua input dalam bentuk:
sumber