जावास्क्रिप्ट के साथ एएसपी: टेक्स्टबॉक्स टेक्स्ट को बदलने के लिए सही कोड


मेरे पास उपयोगकर्ता के लिए नंबर इनपुट करने के लिए asp.TextBoxes के साथ एक एएसपीएक्स वेबफॉर्म है।
यदि वे चेकबॉक्स पर क्लिक करते हैं तो ये संख्याएँ शून्य में बदल जानी चाहिए।
समस्या यह है कि वे बदलते नहीं हैं.
ये टेक्स्टबॉक्स के उदाहरण हैं –

<asp:TextBox CssClass="pcnt18right" type="number" min="0" style="width:10%; text-align:right" placeholder="00" ID="TimeMins" runat="server"></asp:TextBox>

<asp:TextBox CssClass="pcnt18right" type="number" min="0" Style="text-align: left;" ID="TimeSecs" runat="server"></asp:TextBox>

यह चेकबॉक्स है –

<input type="CheckBox" id="LandingOver75m" class="regular-checkbox" onclick="MakeScoresZero()" runat="server" />

मैंने क्या प्रयास किया है:

जावास्क्रिप्ट वेब फॉर्म के अंत में लिखा होता है
चेकबॉक्स पर क्लिक करने पर चलने वाला जावास्क्रिप्ट कोड ‘MakeScoresZero()’ कहलाता है। मैंने यह देखने के लिए परीक्षण किया कि जब चेकबॉक्स पर क्लिक किया जाता है तो अलर्ट(‘123’) वाली एक पंक्ति डालकर कोड चलता है। इसमें पहली पंक्ति के रूप में. यही एकमात्र लाइन है जो काम करती है.

<script type="text/javascript">
    function MakeScoresZero() {
        let Mins = document.getElementById("TimeMins");
        Mins.Text = "0";
        let Secs = document.getElementById("TimeSecs");
        Secs.Text = "0";
    }
  </script>

.Text के बजाय मैंने .value, .innerHTML और .textContent को भी आज़माया है, लेकिन सफलता नहीं मिली।

किसी भी मदद की सराहना की जाएगी क्योंकि मैंने इस पर कई दिन बिताए हैं और यह बहुत निराशाजनक है।

समाधान 1

निम्नलिखित युक्ति अपनानी चाहिए –

जावास्क्रिप्ट
<script type="text/javascript">
    function MakeScoresZero() {
        document.getElementById("TimeMins").value = 0;        
        document.getElementById("TimeSecs").value = 0;        
    }
  </script>

समाधान 2

वेबफ़ॉर्म आपके द्वारा सेट की गई आईडी को “व्यवस्थित” करता है ताकि यह सुनिश्चित हो सके कि वे पूरे पृष्ठ पर अद्वितीय हैं। यह डेटा-बाउंड नियंत्रणों में विशेष रूप से महत्वपूर्ण है, जहां एक ही टेम्पलेट को कई बार दोहराया जा सकता है।

यदि आप ब्राउज़र में अपने पृष्ठ का स्रोत देखते हैं, तो आप देखेंगे कि आपके नियंत्रण की आईडी आपके द्वारा मार्कअप में सेट की गई आईडी के बिल्कुल बराबर नहीं हैं।

कई विकल्प हैं:

1) यदि आपकी स्क्रिप्ट पृष्ठ के भीतर इनलाइन परिभाषित है, तो आप पास करने के लिए एक अभिव्यक्ति का उपयोग कर सकते हैं ClientID स्क्रिप्ट के लिए:

एएसपीएक्स
<script type="text/javascript">
function MakeScoresZero() {
    let Mins = document.getElementById("<%= TimeMins.ClientID %>");
    Mins.Text = "0";
    let Secs = document.getElementById("<%= TimeSecs.ClientID %>");
    Secs.Text = "0";
}
</script>

2) यदि आप आश्वस्त हैं कि कभी कोई संघर्ष नहीं होगा, तो सेट करें ClientIDMode को Static:

एएसपीएक्स
<asp:TextBox CssClass="pcnt18right" type="number" min="0" style="width:10%; text-align:right" placeholder="00" ID="TimeMins" ClientIDMode="Static" runat="server"></asp:TextBox>
<asp:TextBox CssClass="pcnt18right" type="number" min="0" Style="text-align: left;" ID="TimeSecs" ClientIDMode="Static" runat="server"></asp:TextBox>

ASP.NET 4.0 में क्लाइंटआईडीमोड – रिक स्ट्राल का वेब लॉग[^]

3) आईडी पर सटीक मिलान की तलाश करने के बजाय, एक आईडी की तलाश करें के साथ समाप्त हो रहा है अपेक्षित मूल्य:

जावास्क्रिप्ट
function MakeScoresZero() {
    let Mins = document.querySelector("input[id^='TimeMins']");
    Mins.Text = "0";
    let Secs = document.querySelector("input[id^=TimeSecs']");
    Secs.Text = "0";
}

विशेषता चयनकर्ता – सीएसएस: कैस्केडिंग स्टाइल शीट्स | एमडीएन[^]

4) लक्ष्य नियंत्रणों की पहचान करने के लिए कुछ अन्य साधनों का उपयोग करें – उदाहरण के लिए, एक डमी सीएसएस वर्ग जोड़ें, और उस वर्ग के साथ तत्व का चयन करें।

コメント

タイトルとURLをコピーしました