जवाबों:
अस्थायी रूप से उन्हें सक्षम करें।
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);
@ user113716 ने मुख्य उत्तर दिया। मेरा योगदान यहाँ केवल एक 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);
}
});
अक्षम इनपुट तत्वों को क्रमबद्ध नहीं किया जाता है क्योंकि 'अक्षम' का अर्थ है कि उनका उपयोग नहीं किया जाना चाहिए, प्रति W3C मानक। jQuery अभी मानक का पालन कर रहा है, भले ही कुछ ब्राउज़र न हों। आप इसके चारों ओर काम कर सकते हैं, अक्षम फ़ील्ड के समान मान के साथ एक छिपे हुए फ़ील्ड को जोड़कर, या jQuery के माध्यम से ऐसा कर सकते हैं, कुछ इस प्रकार है:
$('#myform').submit(function() {
$(this).children('input[hiddeninputname]').val($(this).children('input:disabled').val());
$.post($(this).attr('url'), $(this).serialize, null, 'html');
});
जाहिर है, अगर आपके पास एक से अधिक अक्षम इनपुट हैं, तो आपको चयनकर्ताओं, आदि से अधिक पुनरावृति करनी होगी।
यदि कोई व्यक्ति उन्हें सक्रिय नहीं करना चाहता है, तो उन्हें फिर से अक्षम करें, आप यह करने की कोशिश भी कर सकते हैं (मैंने इसे निष्क्रिय क्षेत्रों से संशोधित किया है जो क्रमबद्ध तरीके से नहीं उठाया गया है , एक प्लगइन का उपयोग करके एक सामान्य फ़ंक्शन का उपयोग करके):
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