एक एएसपी के लिए OnClick बनाम OnClientClick: चेक बॉक्स?

वोट
81

क्या किसी को पता है कि क्यों एक के लिए एएसपी जावास्क्रिप्ट हैंडलर क्लाइंट साइड: चेक बॉक्स एक onclick = विशेषता के बजाय एक OnClientClick = विशेषता, एएसपी के लिए के रूप में होने की जरूरत है: बटन?

उदाहरण के लिए, इस काम करता है:

<asp:CheckBox runat=server OnClick=alert(this.checked); />

और यह नहीं (कोई त्रुटि) करता है:

<asp:CheckBox runat=server OnClientClick=alert(this.checked); />

लेकिन यह काम करता है:

<asp:Button runat=server OnClientClick=alert('Hi'); />

और इस (टाइम त्रुटि संकलन) नहीं करता है:

<asp:Button runat=server OnClick=alert('hi'); />

(मुझे पता है कि के लिए Button.OnClick है, यही कारण है कि चेक बॉक्स उसी तरह काम नहीं करता है मैं सोच रहा हूँ ...)

16/07/2009 को 03:27
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


8 जवाब

वोट
8

आप कर रहे हैं सही इस असंगत है। क्या हो रहा है कि चेक बॉक्स एक सर्वर साइड ऑनक्लिक ईवेंट नहीं है, तो अपने मार्कअप ब्राउज़र को प्रदान की गई हो जाता है। http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkbox_events.aspx

बटन जबकि करता a onclick है - इसलिए ASP.NET अपने OnClick मार्कअप में एक घटना के लिए एक संदर्भ की उम्मीद है।

16/07/2009 को 03:34
का स्रोत उपयोगकर्ता

वोट
98

यही कारण है कि बहुत अजीब है। मैं जाँच की चेक बॉक्स प्रलेखन पेज जो पढ़ता

<asp:CheckBox id="CheckBox1" 
     AutoPostBack="True|False"
     Text="Label"
     TextAlign="Right|Left"
     Checked="True|False"
     OnCheckedChanged="OnCheckedChangedMethod"
     runat="server"/>

आप देख सकते हैं, वहाँ कोई OnClick या OnClientClick गुण परिभाषित किया गया है।

इसे ध्यान में रखते हुए, मुझे लगता है कि यह क्या हो रहा है है।

जब आप ऐसा करते हैं,

<asp:CheckBox runat="server" OnClick="alert(this.checked);" />

ASP.NET onclick विशेषता को संशोधित करने और उसे रेंडर के रूप में ब्राउज़र पर है नहीं करता है। यह के रूप में प्रदान किया जाएगा:

  <input type="checkbox" OnClick="alert(this.checked);" />

जाहिर है, एक ब्राउज़र 'onClick' को समझते हैं और एक चेतावनी डालता है सकते हैं।

और इस परिदृश्य में

<asp:CheckBox runat="server" OnClientClick="alert(this.checked);" />

फिर, ASP.NET OnClientClick विशेषता परिवर्तन नहीं होगा और के रूप में यह प्रस्तुत करना होगा

<input type="checkbox" OnClientClick="alert(this.checked);" />

ब्राउज़र OnClientClick नहीं समझोगे के रूप में कुछ नहीं होगा। यह भी किसी भी त्रुटि से आगे नहीं बढ़ेगी, क्योंकि यह सिर्फ एक और विशेषता है।

आप प्रदान की गई एचटीएमएल को देखकर ऊपर इस बात की पुष्टि कर सकते हैं।

और हाँ, यह नहीं सहज ज्ञान युक्त बिल्कुल है।

16/07/2009 को 03:35
का स्रोत उपयोगकर्ता

वोट
8

क्योंकि वे नियंत्रण के दो अलग-अलग प्रकार के होते हैं ...

तुम देखो, अपने वेब ब्राउज़र सर्वर साइड प्रोग्रामिंग के बारे में पता नहीं है। यह केवल अपने आप डोम और इसे इस्तेमाल करता है कि घटना मॉडल ... के बारे में और यह करने के लिए प्रदान की गई वस्तुओं के लिए क्लिक करें घटनाओं के लिए जानता है। आप अंतिम मार्कअप है कि वास्तव में ASP.Net से ब्राउज़र को भेजा जाता है मतभेद अपने आप को देखने के लिए जांच करनी चाहिए।

<asp:CheckBox runat="server" OnClick="alert(this.checked);" />

करने के लिए renders

<input type="check" OnClick="alert(this.checked);" />

तथा

<asp:CheckBox runat="server" OnClientClick="alert(this.checked);" />

करने के लिए renders

<input type="check" OnClientClick="alert(this.checked);" />

अब, के रूप में मैं याद कर सकते हैं के पास के रूप में, वहाँ कहीं भी कोई ब्राउज़र है कि उनके डोम में "OnClientClick" घटना का समर्थन कर रहे हैं ...

संदेह में, हमेशा उत्पादन के स्रोत देखते हैं के रूप में यह ब्राउज़र को भेज दिया है ... वहाँ डिबग जानकारी है कि आप देख सकते हैं की एक पूरी दुनिया है।

16/07/2009 को 03:39
का स्रोत उपयोगकर्ता

वोट
1

मैं चेतावनी और संदेशों को साफ किया गया था और देखते हैं कि वी.एस. उस बारे में चेतावनी देता है: मान्यता (ASP.Net): गुण 'onClick' तत्व 'चेकबॉक्स' में एक मान्य विशेषता नहीं है। एक ग्राहक के पक्ष हैंडलर निर्दिष्ट करने के लिए एचटीएमएल इनपुट नियंत्रण का प्रयोग करें और फिर आप अतिरिक्त स्पैन टैग और दो तत्व नहीं मिलेगा।

03/10/2010 को 21:56
का स्रोत उपयोगकर्ता

वोट
5

आप में से जो लोग यहां सर्वर साइड की तलाश में गया के लिए OnClickहैंडलर यह हैOnCheckedChanged

29/11/2012 को 17:00
का स्रोत उपयोगकर्ता

वोट
-1

एक समाधान JQuery के साथ है:

$(document).ready(
    function () {
        $('#mycheckboxId').click(function () {
               // here the action or function to call
        });
    }
);
19/01/2015 को 16:17
का स्रोत उपयोगकर्ता

वोट
0

आप इस तरह टैग कर सकते हैं:

<asp:CheckBox runat="server" ID="ckRouteNow" Text="Send Now" OnClick="checkchanged(this)" />

कहा जाता है जावास्क्रिप्ट में .checked संपत्ति सही हो जाएगा ... चेकबॉक्स की वर्तमान स्थिति:

  function checkchanged(obj) {
      alert(obj.checked)
  }
14/02/2018 को 21:28
का स्रोत उपयोगकर्ता

वोट
0

Asp.net चेक बॉक्स विधि OnClientClick का समर्थन नहीं कर रहा है।
आप एएसपी के लिए कुछ जावास्क्रिप्ट घटना जोड़ना चाहते हैं: चेकबॉक्स आपको "Pre_Render" पर या सर्वर कोड में "Page_Load" घटनाओं पर संबंधित विशेषताओं को जोड़ने के लिए है:

सी#:

    private void Page_Load(object sender, EventArgs e)
    {
        SomeCheckBoxId.Attributes["onclick"] = "MyJavaScriptMethod(this);";
    }

नोट: सुनिश्चित करें कि आप AutoEventWireup = "false" निर्धारित नहीं करते पृष्ठ शीर्षक में।

वीबी:

    Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        SomeCheckBoxId.Attributes("onclick") = "MyJavaScriptMethod(this);"
    End Sub
19/12/2018 को 12:29
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more