JQuery UI স্বতঃপূরণের জন্য নির্বাচনের পরে ফর্ম ক্ষেত্র সাফ করুন


97

আমি একটি ফর্ম বিকাশ করছি এবং jQuery UI স্বতঃপূরণ ব্যবহার করছি। যখন ব্যবহারকারী কোনও বিকল্প নির্বাচন করেন, তখন আমি পছন্দটি প্যারেন্ট <p>ট্যাগে সংযুক্ত একটি স্প্যানে পপ করতে চাই । তারপরে আমি নির্বাচনটি জনবহুল হওয়ার চেয়ে মাঠটি পরিষ্কার করতে চাই।

আমার স্প্যানটি ঠিক দেখা যাচ্ছে তবে আমি ক্ষেত্রটি সাফ করতে পারছি না।

আপনি কীভাবে jQuery UI স্বতঃপূরণের ডিফল্ট নির্বাচন ক্রিয়া বাতিল করবেন?

আমার কোডটি এখানে:

var availableTags = ["cheese", "milk", "dairy", "meat", "vegetables", "fruit", "grains"];
$("[id^=item-tag-]").autocomplete({
    source: availableTags,

    select: function(){
        var newTag = $(this).val();
        $(this).val("");
        $(this).parent().append("<span>" + newTag + "<a href=\"#\">[x]</a> </span>");
    }
});

খালি কাজ করা কাজ $(this).val("");করে না। ম্যাডেনিংয়ের বিষয়টি হ'ল আমি স্বতঃসম্পূর্ণতা উপেক্ষা করলে প্রায় সঠিক ফাংশনটি ঠিকঠাক কাজ করে এবং যখন ব্যবহারকারী কোনও কমা টাইপ করে তখনই ব্যবস্থা নিন:

$('[id^=item-tag-]').keyup(function(e) {
    if(e.keyCode == 188) {
        var newTag = $(this).val().slice(0,-1);
        $(this).val('');
        $(this).parent().append("<span>" + newTag + "<a href=\"#\">[x]</a> </span>");
    }
});

আসল শেষ ফলাফলটি একাধিক নির্বাচনের সাথে কাজ করার জন্য স্বতঃসিদ্ধ হওয়া। কারও কাছে যদি এর জন্য কোনও পরামর্শ থাকে তবে তারা স্বাগত জানাবে।

উত্তর:


182

ক্ষেত্রটি সাফ করার জন্য এবং ইভেন্টটি বাতিল করতে $(this).val(''); return false; আপনার selectফাংশনের শেষে যুক্ত করুন :)

এটি মান আপডেট হতে বাধা দেবে। আপনি দেখতে পাবেন যে এটি 109 লাইনের চারপাশে কীভাবে কাজ করে

সেখানে কোডটি বিশেষত মিথ্যা জন্য পরীক্ষা করে:

if ( false !== self._trigger( "select", event, { item: item } ) ) {
  self.element.val( item.value );
}

কল্পনাপ্রসূত! আমি বোকা বোধ করছি। এখন আমি জানি, এবং জ্ঞান অর্ধেক যুদ্ধ।
জন এফ হ্যানকক

এটি ঠিক করে ফেলেছে। আমি গ্রহণ করার চেষ্টা করেছি, তবে এটি আমাকে জানিয়েছে যে আমি আরও 7 মিনিটের জন্য পারি না। স্বীকৃত ধন্যবাদ
জন এফ হ্যানকক

4
আমাকে কেবল এটিকে যোগ করতে দাও যে একবার আপনি মিথ্যা প্রত্যাবর্তনের পরে আপনাকে আর নিজের মূল্য নির্ধারণ করতে হবে না (অর্থাত্ প্রয়োজন নেই $(this).val('');)
উরি

9
যদি কেউ চান যে ইনপুট ক্ষেত্রটি যে কোনও মূল্যের থেকে পরিষ্কার হয়ে যায় তবে আমি বিশ্বাস করি যে একটি কল .val('')অবশ্যই হবে। return false;শুধুমাত্র ইনপুট ক্ষেত্র উপস্থিত হওয়া থেকে নির্বাচিত আইটেমের টেক্সট প্রতিরোধ করবে।
রায়ান 9

4
উরি ভুল এবং রায়ান সঠিক। আপনার নির্বাচনের সাথে আপডেট হওয়া থেকে বিরত রাখতে আপনাকে মিথ্যা ফিরিয়ে নিতে হবে এবং আপনি এটি পরিষ্কার করতে চাইলে আপনার অতিরিক্ত $ (এটি) .ভাল ('') দরকার।
mynameistechno

19

মিথ্যা প্রত্যাবর্তনের পরিবর্তে আপনি ইভেন্ট.প্রিভেন্টডাফল্ট () ব্যবহার করতে পারেন।

select: function(event, ui){
    var newTag = $(this).val();
    $(this).val("");
    $(this).parent().append("<span>" + newTag + "<a href=\"#\">[x]</a> </span>");
    event.preventDefault();
}

আমি সন্দেহ করি যে এই পদ্ধতিটি গৃহীত উত্তরের চেয়ে বেশি দক্ষ।
dlsso

6

ক্ষেত্রটি খালি করতে, নির্বাচিত কলব্যাকের মধ্যে প্রত্যাবর্তন মিথ্যা দরকার তবে আপনি যদি আবার ক্ষেত্রটি নিয়ন্ত্রণ করতে চান, অর্থাৎ মানটি নির্ধারণ করেন তবে আপনাকে ইউআইয়ের বাইরে বেরোনোর ​​জন্য একটি নতুন ফাংশন কল করতে হবে।

সম্ভবত আপনার একটি প্রম্পট মান আছে যেমন:

var promptText = "Enter a grocery item here."

এটি উপাদান এর ভাল হিসাবে সেট করুন। (ফোকাসে আমরা '' তে সেট করেছি)।

$("selector").val(promptText).focus(function() { $(this).val(''); }).autocomplete({
    source: availableTags,
    select: function(){
        $(this).parent().append("<span>" + ui.item.value + "<a href=\"#\">[x]</a> </span>");
     foo.resetter(); // break out //
    return false;  //gives an empty input field // 
    }
});

foo.resetter = function() {
  $("selector").val(promptText);  //returns to original val
}

হাই, আমার একটি আলাদা প্রশ্ন ছিল, প্রম্পটটি সংরক্ষণ করার বিষয়ে, আমি প্রযুক্তিগত কারণে স্থানধারককে ব্যবহার করতে পারি না। এটি নিখুঁত ছিল, আপনাকে ধন্যবাদ!
hgolov

5

এটি আমর জন্য ভাল কাজ করছে.

ইভেন্ট নির্বাচন করার পরে, আমি ইভেন্ট পরিবর্তন ব্যবহার করেছি।

 change:function(event){
   $("#selector").val("");  
   return false;
 }

আমি শিক্ষানবিশ!



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.