আমি কীভাবে jQuery এর সাথে <ইনপুট টাইপ = "পাঠ্য"> চালু করার বিষয়টি বাস্তবায়ন করব?


উত্তর:


219

তুমি ব্যবহার করতে পার .change()

$('input[name=myInput]').change(function() { ... });

তবে এই ইভেন্টটি কেবল তখনই চালিত হবে যখন নির্বাচক ফোকাস হারিয়ে ফেলেছে, সুতরাং এই কাজটি করতে আপনাকে অন্য কোথাও ক্লিক করতে হবে।

যদি সেটা পুরোপুরি ঠিক তোমার জন্য নয়, আপনি অন্যান্য কিছু ব্যবহার করতে পারে , jQuery ঘটনা মত keyup , keydown বা কী টেপার - যদি আপনি চান সঠিক প্রভাব উপর নির্ভর করে।


দুর্ভাগ্যক্রমে, এটি কোনও লুকানো ইনপুটটির জন্য কাজ করে না। কোনও লুকানো ইনপুটটিতে বিনিময়ের প্রয়োজন হলে একটি সম্ভাব্য সমাধান হ'ল: <ইনপুট টাইপ = 'পাঠ্য' শৈলী = 'প্রদর্শন: কিছুই নয়' /> (সিএসএস সহ) ..
নিকগ্রাইন

304
নোটটি changeকেবল তখনই জ্বলবে যখন ইনপুট উপাদানটির ফোকাসটি হারাবে। এখানে এমন ঘটনাও রয়েছে inputযা যখনই ফোকাস হারাতে না পারে পাঠ্যবাক্স আপডেট হয় s মূল ইভেন্টগুলির মতো নয় এটি পাঠ্য আটকানো / টেনে আনার জন্যও কাজ করে।
pimvdb

4
দুর্দান্ত মন্তব্য @ পিমভিডিবি। আমি এটি ব্যবহার করেছি এবং এটিকে এই প্রশ্নের উত্তরে রূপান্তরিত করেছি।
আইপ্যাডডেভলপার ২০১১

1
যেহেতু আমি এটি চেষ্টা করছি এবং কেবল শিখেছি যে দুটি শর্ত পূরণ হলেই ঘটনাটি ঘটবে: 1) মান পরিবর্তন; এবং 2) অস্পষ্টতা, আমি অবাক হয়েছি যে অনেকে কী কী পরিবর্তনের প্রত্যাশা করেন () কীপ () দ্বারা ভালভাবে পরিচালনা করা হয়?
তারকাস

হিসাবে changeIE9 দ্বারা সমর্থিত নয়, আপনি ব্যবহার করতে পারেন focusoutএকই comportment আছে
সোমা

247

যেমন @ পিমভিডিবি তার মন্তব্যে বলেছেন,

নোট করুন যে পরিবর্তন কেবল তখনই জ্বলবে যখন ইনপুট উপাদানটির ফোকাসটি হারাবে। এখানে ইনপুট ইভেন্ট রয়েছে যা যখনই ফোকাস হারাতে না পারে পাঠ্যবক্স আপডেট হয় তখনই তা জ্বলে ওঠে। মূল ইভেন্টগুলির মতো নয় এটি পাঠ্য আটকানো / টেনে আনার জন্যও কাজ করে।

( ডকুমেন্টেশন দেখুন ।)

এটি এত দরকারী, এটি একটি উত্তরে এটি রাখা মূল্যবান। বর্তমানে (v1.8 *?) Jquery এ কোনও ইনপুট () সুবিধা নেই, তাই এটি করার উপায়টি

$('input.myTextInput').on('input',function(e){
 alert('Changed!')
});

6
বিশেষত, IE <9 মোটেও সমর্থন করে না।
dlo

13
যেহেতু আপনি একাধিক ইভেন্টের সাথে আবদ্ধ থাকতে পারেন $('form').on('change input', function);তা আমার জন্য কৌশলটি করেছে। ধন্যবাদ।
Justnorris

9
@Norris। এটি সম্ভবত দুবার আগুনে জ্বলবে যখন কোনও উপাদান পরিবর্তন করা হবে (১ ম), এবং ফোকাস হারাবে (২ য়)। এটি অনেক উদ্দেশ্যে সমস্যা নয় তবে তবুও এটি লক্ষণীয়।
আইপ্যাড ডেভেলপার ২০১১


দ্রষ্টব্য, এটি করা প্রতিটি ইনপুট পরিবর্তন (যা আপনি যা খুঁজছেন তা হতে পারে) এর জন্য আগুন জ্বলবে। তবে, আপনি যদি "কখন পরিবর্তিত হয়ে যায়" এর মতো কোনও ইভেন্ট খুঁজছেন, এখানে একটি দুর্দান্ত উদাহরণ
ট্রেভর নেস্টম্যান

79

আমি কীপ ইভেন্টটি নীচের মতো কিছু ব্যবহার করার পরামর্শ দেব:

$('elementName').keyup(function() {
 alert("Key up detected");
});

একই ফলাফলটি অর্জনের কয়েকটি উপায় রয়েছে তাই আমি অনুমান করি এটির পছন্দটি নীচে নেমেছে এবং আপনি কীভাবে এটি সঠিকভাবে কাজ করতে চান তার উপর নির্ভর করে।

আপডেট: এটি কেবল ম্যানুয়াল ইনপুটটির জন্য কাজ করে যা অনুলিপি এবং পেস্ট করে না।

অনুলিপি এবং পেস্ট করার জন্য আমি নিম্নলিখিতগুলি সুপারিশ করব:

$('elementName').on('input',function(e){
 // Code here
});

আমি অবশ্যই পাঠ্য ইনপুটগুলির জন্য এটির একটি প্রস্তাব করছি!
ভেরাকাস

20
কীপ আপ বরখাস্ত না করে ইনপুট উপাদানগুলির বিষয়বস্তু পরিবর্তন করা যেতে পারে। উদাহরণস্বরূপ আপনি মাউস ব্যবহার করে পাঠ্য পেস্ট করতে পারেন।
সেলিকনি

এছাড়াও, চেকবাক্সগুলি ক্যাপচার করার জন্য এখনও পরিবর্তন প্রয়োজন বলে মনে হচ্ছে
টার্বো 2

30

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

$("#tbSearch").on('change keyup paste', function () {
    ApplyFilter();
});

function ApplyFilter() {
    var searchString = $("#tbSearch").val();
    //  ... etc...
}

<input type="text" id="tbSearch" name="tbSearch" />

এটি বেশ সুন্দরভাবে কাজ করে, বিশেষত যখন একটি jqGridনিয়ন্ত্রণের সাথে জুটিবদ্ধ হয় । আপনি কেবল একটি পাঠ্যবক্সে টাইপ করতে পারেন এবং তাত্ক্ষণিকভাবে আপনার ফলাফলগুলি দেখতে পারেন jqGrid


22

এটি করার একটি এবং একমাত্র নির্ভরযোগ্য উপায় রয়েছে এবং এটি হ'ল ব্যবধানে মানটি টানা এবং এটি একটি ক্যাশেড মানের সাথে তুলনা করে।

একমাত্র উপায় হবার কারণ হ'ল বিভিন্ন ইনপুট (কীবোর্ড, মাউস, পেস্ট, ব্রাউজারের ইতিহাস, ভয়েসইনপুট ইত্যাদি) ব্যবহার করে কোনও ইনপুট ক্ষেত্র পরিবর্তন করার একাধিক উপায় রয়েছে এবং আপনি ক্রসে স্ট্যান্ডার্ড ইভেন্টগুলি ব্যবহার করে সেগুলি কখনই আবিষ্কার করতে পারবেন না ব্রাউজার পরিবেশ।

ভাগ্যক্রমে, jQuery এ ইভেন্ট অবকাঠামোকে ধন্যবাদ, আপনার নিজের ইনপুট এক্সচেঞ্জ ইভেন্টটি যুক্ত করা বেশ সহজ। আমি এখানে তাই করেছি:

$.event.special.inputchange = {
    setup: function() {
        var self = this, val;
        $.data(this, 'timer', window.setInterval(function() {
            val = self.value;
            if ( $.data( self, 'cache') != val ) {
                $.data( self, 'cache', val );
                $( self ).trigger( 'inputchange' );
            }
        }, 20));
    },
    teardown: function() {
        window.clearInterval( $.data(this, 'timer') );
    },
    add: function() {
        $.data(this, 'cache', this.value);
    }
};

এটি ব্যবহার করুন: $('input').on('inputchange', function() { console.log(this.value) });

এখানে একটি ডেমো রয়েছে: http://jsfiddle.net/LGAWY/

আপনি একাধিক অন্তর ভয় করছেন, তাহলে আপনি আবদ্ধ করতে পারেন / আবদ্ধমুক্ত এই ঘটনাটি focus/ blur


এই মত আপনার কোড কাজ করা সম্ভব: $('body').on('inputchange', 'input', function() { console.log(this.value) });? বা না, যেমনটি এখানে উল্লেখ করা হয়েছে: github.com/EightMedia/hammer.js/pull/98 ?
TheFrost

13
এই জাতীয় কোড লেখা এবং আরম্ভ করা চরম পারফরম্যান্স প্রভাবের সাথে একটি উন্মাদনা।
ডানুবিয়ান নাবিক

@ AsukaszLech দয়া করে, আমাকে এটি সম্পর্কে বলুন। তবে আপনি যেমন উল্লেখ করেছি হিসাবে আপনি যদি ফোকাস / অস্পষ্ট ইভেন্টগুলি আঘাত করেন তবে বিরতিটি কেবল অস্থায়ীভাবে চলবে। অবশ্যই, 1988 সাল থেকে এমনকি একটি ইন্টেল 386 একটি একক বিরতি পরিচালনা করতে পারে?
ডেভিড হেলসিং

5
<input id="item123" class="firstName" type="text" value="Hello there" data-someattr="CoolExample" />

$(".firstName").on('change keyup paste', function () {
   var element = $(this);
   console.log(element);
   var dataAttribute = $(element).attr("data-someattr");
   console.log("someattr: " + dataAttribute );
});

thisপুরো উপাদানটিতে অ্যাক্সেস পেতে কীওয়ার্ডটি ব্যবহার করার পরামর্শ দিচ্ছি যাতে আপনার এই উপাদানটি দিয়ে যা প্রয়োজন তা করতে সক্ষম হন।


4

এটি গতিশীল / আজাক্স কল হলেও নীচে কাজ করবে work

লিপি:

jQuery('body').on('keyup','input.addressCls',function(){
  console.log('working');
});

HTML,

<input class="addressCls" type="text" name="address" value="" required/>

আমি আশা করি এই কার্যকারী কোডটি এমন কাউকে সহায়তা করবে যারা গতিশীল / আজাক্স কলগুলিতে অ্যাক্সেস করার চেষ্টা করছে ...



2

আপনি কেবল আইডি দিয়ে কাজ করতে পারেন

$("#your_id").on("change",function() {
    alert(this.value);
});

এটি বিদ্যমান উত্তরগুলিতে বেশি যোগ করে না।
পং

2

আপনি এটি বিভিন্ন উপায়ে করতে পারেন, কীআপ তাদের মধ্যে একটি। তবে আমি পরিবর্তনের সাথে সাথে নীচে উদাহরণ দিচ্ছি।

$('input[name="vat_id"]').on('change', function() {
    if($(this).val().length == 0) {
        alert('Input field is empty');
    }
});

এনবি: ইনপুট [নাম = "ভ্যাট_আইডি"] আপনার ইনপুট আইডি বা নামের সাথে প্রতিস্থাপন করুন ।


2

আপনি টাইপ করার সাথে সাথে ইভেন্টটি ট্রিগার করতে চাইলে নিম্নলিখিতটি ব্যবহার করুন:

$('input[name=myInput]').on('keyup', function() { ... });

আপনি যদি ইনপুট ক্ষেত্রটি রেখে ইভেন্টটি ট্রিগার করতে চান তবে নিম্নলিখিতটি ব্যবহার করুন:

$('input[name=myInput]').on('change', function() { ... });

কোনও কারণে এটি আমার পক্ষে কাজ করে নি, তবে এটি করেছে:$(document).on('change', 'input[name=myInput]', function() { ... });
স্টেফান

1
@ স্টেফান, আপনার উদাহরণের কোডটিকে ইভেন্ট প্রতিনিধি বলা হয়। আপনার ইনপুট ক্ষেত্রগুলি পৃষ্ঠা সূচনা হওয়ার পরে অবশ্যই যুক্ত করা উচিত, এজন্য আমার কোড আপনার পক্ষে কাজ করে নি।
উসমান আহমেদ


1

এটি আমার পক্ষে কাজ করেছে। নামের সঙ্গে ক্ষেত্র তাহলে fieldA ক্লিক করা হয় বা যে কোনো একটি কি প্রবেশ এটা আইডি সহ ক্ষেত্র আপডেট fieldB

jQuery("input[name='fieldA']").on("input", function() {
    jQuery('#fieldB').val(jQuery(this).val());
});

0

আপনি ব্যবহার করতে পারে .keypress()

উদাহরণস্বরূপ, এইচটিএমএল বিবেচনা করুন:

<form>
  <fieldset>
    <input id="target" type="text" value="Hello there" />
  </fieldset>
</form>
<div id="other">
  Trigger the handler
</div>

ইভেন্ট হ্যান্ডলারটি ইনপুট ক্ষেত্রে আবদ্ধ হতে পারে:

$("#target").keypress(function() {
  alert("Handler for .keypress() called.");
});

আমি অ্যান্ডির সাথে পুরোপুরি একমত; সবকিছু আপনি কীভাবে এটি কাজ করতে চান তার উপর নির্ভর করে।


1
এটি অনুলিপি / পেস্ট করার জন্য কাজ করে না। মাউস ক্লিকের সাহায্যে পাঠ্য আটকানো থাকলে কোনও ইভেন্ট বরখাস্ত করা হয় না।
ডেভএন 59
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.