কীভাবে একটি এ্যাস বোতামে পোস্টব্যাক অক্ষম করবেন


135

আমার একটি এ্যাস্প বাটন আছে। এটি সার্ভার-সাইড তাই আমি এটি কেবল লগ ইন করা ব্যবহারকারীদের জন্যই প্রদর্শন করতে পারি, তবে আমি এটি একটি জাভাস্ক্রিপ্ট ফাংশনটি চালাতে চাই এবং যখন এটি রানট = "সার্ভার" হয় তখন মনে হয় এটি সর্বদা পোস্টব্যাক ইভেন্টকে কল করে।

আমার নিয়মিত বোতামটি ( <input...>) সার্ভারে চলছে না এবং এটি দুর্দান্ত কাজ করে ...

আমি কীভাবে এই বোতামটি কেবল জাভাস্ক্রিপ্ট চালাতে পারি এবং পোস্টব্যাক নয়?

উত্তর:


263

আপনার জাভাস্ক্রিপ্টটি ভুল হয়ে গেলে তা শেষ করুন।

<asp:button runat="server".... OnClientClick="myfunction(); return false;" />

16
অনেক ক্ষেত্রে লোকেরা এই সিনট্যাক্স << এসপি: বাটন অনক্লিয়েন্টক্লিক = "মাই ফাংশন ()" /> দিয়ে একটি অনক্লিক বা অনক্লিয়েন্টক্লিক ব্যবহার করে যেখানে মাই ফাংশন () মিথ্যা প্রত্যাবর্তন করে এবং এটি যথেষ্ট নয় - আপনাকে অনক্লিয়েন্টক্লিক = "আমার ফাংশন ফিরে ()" ব্যবহার করতে হবে
ব্রোন ডেভিস

17
আমাকে UseSubmitBehavior = "মিথ্যা" পাশাপাশি যুক্ত করতে হয়েছিল; মিথ্যা প্রত্যাবর্তন করতে হবে
ছিনতাই

9
'কারণসমূহবিধি "=" মিথ্যা "যুক্ত করার বিষয়টি নিশ্চিত করুন, অন্যথায় এটি' ওয়েবফর্ম_ডোপোস্টব্যাকবিথঅপশনস 'এবং অতিরিক্ত মার্কআপের একটি গুচ্ছ যুক্ত করবে।
কার্টার মেডলিন

এটিএসপি নেট 4+ এ আমার পক্ষে কাজ করে নি, তবে কনস্ট্যান্টিনের উত্তরটি কেবল OnClientClick="return false"কাজ করেছিল।
টাইলারহহ


15

আপনি jquery ক্লিক ক্রিয়া ব্যবহার করতে পারেন এবং পোস্টব্যাক এড়ানোর জন্য প্রতিরোধক ডিফল্ট () ফাংশনটি ব্যবহার করতে পারেন

<asp:button ID="btnMyButton" runat="server" Text="MyButton" />


$("#btnMyButton").click(function (e) {
// some actions here
 e.preventDefault();
}

এটি একটি মার্জিত উত্তর কারণ এটি আপনাকে শর্তগুলি অক্ষম করার জন্য পরীক্ষা করতে দেয়।
জন মোট

1
কখনও প্রতিরোধ ডিফল্ট ব্যবহার করবেন না কারণ এটি এই ইভেন্টের উপর নির্ভরশীল অন্যান্য ইভেন্টগুলি থামিয়ে দেবে -১
পাইওটর কুলা

1
@ পিপমকিন: অন্য ইভেন্ট শ্রোতাদের বলার একটি দুর্দান্ত উপায় হ'ল আপনি এই ইভেন্টটি পরিচালনা করেছেন যাতে তাদের এগুলি করতে না হয়। আমি মনে করি আপনি যা বোঝাতে চেয়েছিলেন তা হ'ল স্টপপ্রোপেশন, যা ঘটনাটিকে অন্য ইভেন্ট শ্রোতাদের দ্বারা এমনকি শোনা থেকে থামিয়ে দেয়।
সেবাবাস

Yeaaaaaaaaaa। কোন। ৪ বছর পরে এবং আমি এখন আরও পিছনে দাঁড়িয়ে আছি। শুধু যে কোন কাজ করবেন না।
পাইটর কুলা

8

এই বিবেচনা.

<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequest);
function BeginRequest(sender, e) {
    e.get_postBackElement().disabled = true;

}
     </script>

6

অন্যেরা ঠিক বলেছেন যে আপনাকে মিথ্যা ফেরত দিতে আপনার কলব্যাকের প্রয়োজন; তবে আমি যুক্ত করতে চাই যে অনক্লিক সেট করে এটি করা জিনিসগুলি করার একটি কুরুচিপূর্ণ পুরানো উপায়। আমি আপত্তিজনক জাভাস্ক্রিপ্ট সম্পর্কে পড়ার সুপারিশ করব । মত একটি লাইব্রেরি ব্যবহার jQuery এর আপনার জীবন সহজ, এবং HTML কম আপনার জাভাস্ক্রিপ্ট করতে মিলিত বানাতে পারে (এবং jQuery এর Microsoft দ্বারা সমর্থিত এখন!)


4

ASP.NET সর্বদা asp:Buttonএকটি হিসাবে উত্পন্ন করে input type=submit
আপনি যদি এমন কোনও বোতাম চান যা যা কোনও পোস্ট দেয় না, তবে সার্ভারের দিকের উপাদানটির জন্য কিছু নিয়ন্ত্রণ প্রয়োজন, বৈশিষ্ট্য সহ একটি সাধারণ এইচটিএমএল ইনপুট তৈরি করুন type=buttonএবংrunat=server

আপনি যদি ক্লিক ক্রিয়াগুলি নিষ্ক্রিয় করেন OnClientClick=return false, তবে ক্লিকের ফলে কিছুই করা হবে না, যদি না আপনি এই জাতীয় কোনও ক্রিয়া তৈরি করেন:

function btnClick() {
    // do stuff
    return false;
}

3

আপনি .NET কাঠামোর কোন সংস্করণ ব্যবহার করছেন তা আপনি বলবেন না।

আপনি যদি ভি 2.0 বা ততোধিক ব্যবহার করে থাকেন তবে বোতামের অনক্লিক ইভেন্টটি উত্থাপিত হলে আপনি জাভাস্ক্রিপ্ট ফাংশন সম্পাদন করতে অনক্লিয়েন্টক্লিক বৈশিষ্ট্যটি ব্যবহার করতে পারেন।

কোনও সার্ভার পোস্টব্যাক ঘটানো রোধ করতে আপনাকে যা করতে হবে তা হ'ল falseজাভাস্ক্রিপ্ট ফাংশন থেকে ফিরে আসা।


3

অতিরিক্ত হিসাবে গৃহীত উত্তরের জন্য আপনি UseSubmitBehavior = "false" MSDN ব্যবহার করতে পারেন


এএসপি.এনইটি যোগ করেছে; __doPostBack(ক্লায়েন্ট ক্লিক স্ক্রিপ্ট শেষে।
ইভান এইচ

3

আমার ক্ষেত্রে, আমি অনক্লিয়েন্টক্লিকটিতে রিটার্ন যোগ করার সমাধান করেছি:

পিছনে কোড

function verify(){
  if (document.getElementById("idName").checked == "") {
    alert("Fill the field");
    return false;
  }
}

ডিজাইন সারফেস

<asp:Button runat="server" ID="send" Text="Send" onClientClick="return verify()" />

OnClickএরপরে কীভাবে পদ্ধতি চালানো যায় ।
5377037

2

আপনি কোডটি ব্যবহার করতে পারেন:

<asp:Button ID="Button2" runat="server"
     Text="Pulsa"
     OnClientClick="this.disabled=true"
     UseSubmitBehavior="False"/>

যদি জমা দাও

...
<form id="form1" runat="server" onsubmit="deshabilita()">
...
<script type="text/javascript">
    function deshabilita()
    {
        var btn = "<%= Button1.ClientID %>";
        if (confirm("Confirme postback"))
        {
            document.getElementById(btn).disabled = true;
            return true;
        }
        return false;
    }
</script>


2

বৈধতা সহ

এই উদাহরণে আমি দুটি নিয়ন্ত্রণ ব্যবহার করেছি ddlএবং txtbox, একটি সুখী কোডিং রয়েছে

 asp:ScriptManager ID="script1" runat="server" /asp:ScriptManager

    asp:UpdatePanel ID="Panel1" runat="server"
       ContentTemplate

// ASP BUTTON
asp:Button ID="btnSave" runat="server" Text="Save" class="btn btn-success" OnClientClick="return Valid()" OnClick="btnSave_Click"


   /ContentTemplate    
    /asp:UpdatePanel    

  <script type="text/javascript">
        function Valid() {

            if ($("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").val() == 0) {
                alert("Please select YOUR TEXT");
                $("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").focus();
                return false;
            }

            if ($("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").val().length == 0) {
                alert("Please Type YOUR TEXT");
                $("ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").focus();
                return false;
            }
            return true;
        }
</script>

2

আপনি এই জন্য JQuery ব্যবহার করতে পারেন

<asp:Button runat="server" ID="btnID" />

JQuery চেয়ে

$("#btnID").click(function(e){e.preventDefault();})
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.