/ / फॉर्म खोजें -> यदि मैं जो कहता हूं उसके बराबर सभी बॉक्स चेक करें - jquery, फॉर्म, चेकबॉक्स

फॉर्म ढूंढें -> सभी बक्से की जांच करें यदि मूल्य बराबर है जो मैं कहता हूं - jquery, form, checkbox

मैं आसपास के फॉर्म को खोजने के लिए एक साधारण कार्य करने की कोशिश कर रहा हूं, उसके बाद एक निर्दिष्ट मान के साथ सभी चेकबॉक्स ढूंढने और फिर सभी चेक करें :)

एचटीएमएल

<form action="bla bla bla">
<a href="javascript:void(0);" onclick="checkAll(2);">Check all 2s</a>

<input type="checkbox" value="1" /> 1
<input type="checkbox" value="1" /> 1
<input type="checkbox" value="2" /> 2
<input type="checkbox" value="2" /> 2
<input type="checkbox" value="3" /> 3
<input type="checkbox" value="4" /> 3
</form>

js

function checkAll(i) {
var checkboxes = $(this).closest("form").find("input[type=checkbox][value="+i+"]");
checkboxes.attr("checked", "checked");
}

लेकिन बिल्कुल कुछ भी नहीं होता है। क्या गलत हो जाता है? :)

उत्तर:

उत्तर № 1 के लिए 1

समस्या यह है कि आप उपयोग कर रहे हैं this के भीतर checkAll एक सही प्रारंभ के बिना। कब checkAll() निष्पादित किया जाता है, this वैश्विक वस्तु के लिए बाध्य होगा (window, इस मामले में)।

क्लिक किया गया <a> तत्व के माध्यम से उपलब्ध है this केवल जावास्क्रिप्ट कोड के अंदर onclick विशेषता। आपको पास होना है this सेवा मेरे checkAll() एक पैरामीटर के रूप में।

HTML कोड को इस तरह बदलना होगा:

<a href="javascript:void(0);" onclick="checkAll(this, 2);">Check all 2s</a>

जावास्क्रिप्ट कोड होगा:

function checkAll(el, i) {
var checkboxes = $(el).closest("form").find("input[type=checkbox][value=" + i + "]");
checkboxes.attr("checked", "checked");
}

उत्तर № 2 के लिए 1

जबकि मैं जरूरी कुछ भी गलत नहीं देख सकता थाआपके कोड के साथ, इसके साथ एक jsField बनाने की कोशिश करने के परिणामस्वरूप चेक फंक्शन के बारे में जावास्क्रिप्ट त्रुटि हुई जब एंकर पर क्लिक करते समय परिभाषित नहीं किया गया - मुझे लगता है कि यह एक असंबंधित गुंजाइश मुद्दा हो सकता है जिस तरह से jsFiddle जावास्क्रिप्ट जावास्क्रिप्ट पर चलते हैं, लेकिन मैं " 100% निश्चित नहीं हूँ

मैं इसके बजाय दूर करने का विकल्प चुना onclick लिंक की विशेषता, कस्टम डेटा विशेषता के विरुद्ध तुलना करने के लिए मूल्य को संग्रहीत करें ()data-value), फिर jQuery का उपयोग करके क्लिक इवेंट हैंडलर (लिंक में जोड़े गए वर्ग के आधार पर) को बांधें।

नया HTML ऐसा दिखता है:

<form action="bla bla bla">
<a href="#" class="checkall" data-value="2">Check all 2s</a>

<input type="checkbox" value="1" /> 1
<input type="checkbox" value="1" /> 1
<input type="checkbox" value="2" /> 2
<input type="checkbox" value="2" /> 2
<input type="checkbox" value="3" /> 3
<input type="checkbox" value="4" /> 3
</form>

और फिर jQuery कोड इस तरह दिखता है:

$(function() {
$("a.checkall").click(function(e) {
e.preventDefault();
var $this = $(this);
var checkboxes = $this.closest("form").find("input:checkbox[value=""+$this.data("value")+""]");
checkboxes.attr("checked", "checked");
});
});

जवाब के लिए 0 № 3

इस तरह की कोशिश:

function checkAll(i, ref) {
$(ref).siblings("input[type=checkbox][value="" + i + ""]").attr("checked", "checked");
}
$("form :checkbox").click(function() {
checkAll($(this).prop("value"), this)
});