উত্তর:
অস্থায়ীভাবে তাদের সক্ষম করুন।
var myform = $('#myform');
// Find disabled inputs, and remove the "disabled" attribute
var disabled = myform.find(':input:disabled').removeAttr('disabled');
// serialize the form
var serialized = myform.serialize();
// re-disabled the set of inputs that you previously enabled
disabled.attr('disabled','disabled');
readonly
পরিবর্তে বিবেচনা মূল্য disabled
।
অক্ষম ইনপুটগুলির পরিবর্তে পঠনযোগ্য ইনপুটগুলি ব্যবহার করুন:
<input name='hello_world' type='text' value='hello world' readonly />
এটি সিরিয়ালাইজ () দ্বারা বাছাই করা উচিত।
আপনি একটি প্রক্সি ফাংশন (এটা উভয় প্রভাবিত ব্যবহার করতে পারেন $.serializeArray()
এবং $.serialize()
):
(function($){
var proxy = $.fn.serializeArray;
$.fn.serializeArray = function(){
var inputs = this.find(':disabled');
inputs.prop('disabled', false);
var serialized = proxy.apply( this, arguments );
inputs.prop('disabled', true);
return serialized;
};
})(jQuery);
@ ব্যবহারকারী 113716 মূল উত্তরটি সরবরাহ করেছেন। এখানে আমার অবদানটি একটি ফাংশন যুক্ত করে কেবল একটি jQuery নব্বই:
/**
* Alternative method to serialize a form with disabled inputs
*/
$.fn.serializeIncludeDisabled = function () {
let disabled = this.find(":input:disabled").removeAttr("disabled");
let serialized = this.serialize();
disabled.attr("disabled", "disabled");
return serialized;
};
ব্যবহারের উদাহরণ:
$("form").serializeIncludeDisabled();
এটা চেষ্টা কর:
<input type="checkbox" name="_key" value="value" disabled="" />
<input type="hidden" name="key" value="value"/>
আমি কয়েকটি কাজের ক্ষেত্র দেখতে পাচ্ছি, কিন্তু এখনও কেউ নিজের সিরিয়ালাইজিং ফাংশনটি লেখার পরামর্শ দিচ্ছে না? আপনি এখানে যান: https://jsfiddle.net/Lnag9kbc/
var data = [];
// here, we will find all inputs (including textareas, selects etc)
// to find just disabled, add ":disabled" to find()
$("#myform").find(':input').each(function(){
var name = $(this).attr('name');
var val = $(this).val();
//is name defined?
if(typeof name !== typeof undefined && name !== false && typeof val !== typeof undefined)
{
//checkboxes needs to be checked:
if( !$(this).is("input[type=checkbox]") || $(this).prop('checked'))
data += (data==""?"":"&")+encodeURIComponent(name)+"="+encodeURIComponent(val);
}
});
অক্ষম ইনপুট উপাদানগুলি ক্রমিকায়িত হয় না কারণ 'অক্ষম' মানে তারা ডাব্লু 3 সি স্ট্যান্ডার্ড অনুযায়ী ব্যবহার করা উচিত নয়। কিছু ব্রাউজারগুলি না করলেও jQuery কেবলমাত্র মান মেনে চলে। অক্ষম ক্ষেত্রের অনুরূপ একটি মান সহ একটি লুকানো ক্ষেত্র যুক্ত করে, বা jQuery এর মাধ্যমে এই জাতীয় কিছু করে আপনি এই চারপাশে কাজ করতে পারেন:
$('#myform').submit(function() {
$(this).children('input[hiddeninputname]').val($(this).children('input:disabled').val());
$.post($(this).attr('url'), $(this).serialize, null, 'html');
});
স্পষ্টতই, যদি আপনার একাধিক অক্ষম ইনপুট থাকে তবে আপনাকে ম্যাচিং নির্বাচক ইত্যাদির মাধ্যমে পুনরাবৃত্তি করতে হবে d
যদি কেউ এগুলিকে সক্রিয় করতে না চান, তবে আবার তাদের অক্ষম করুন, আপনি এটি করার চেষ্টাও করতে পারেন ( সিরিয়ালাইজ অ্যারে দ্বারা গৃহীত নয় এমন অক্ষম ক্ষেত্রগুলি থেকে আমি এটি সংশোধন করেছি , একটি প্লাগইন ব্যবহার করে কোনও সাধারণ ফাংশন ব্যবহার করে):
function getcomment(item)
{
var data = $(item).serializeArray();
$(':disabled[name]',item).each(function(){
data.push({name: item.name,value: $(item).val()});
});
return data;
}
সুতরাং আপনি তাদের এভাবে কল করতে পারেন:
getcomment("#formsp .disabledfield");
code
3: {নাম: অপরিবর্তিত, মান: ""} 4: {নাম: অপরিজ্ঞাত, মান: ""}
হারুন হুডনের ঠিক উপরে:
হতে পারে আপনি ইনপুট (যেমন নির্বাচন করুন) এর চেয়ে অন্য কিছু পেয়েছেন, তাই আমি পরিবর্তন করেছি
this.find(":input:disabled")
প্রতি
this.find(":disabled")
textarea
কিন্তু অক্ষম নয় সিরিয়ালিয়াল করতে পারেনinput
..