it-swarm.asia

كيفية تجنب إرسال حقول الإدخال المخفية عن طريق العرض: لا شيء إلى الخادم؟

تخيل أن لديك نموذجًا يمكنك من خلاله تبديل رؤية عدة حقول. وإذا لم يتم عرض الحقل ، فأنت لا تريد أن تكون قيمته مطلوبة.

كيف تتعامل مع هذا الموقف؟

83
glaz666

سيؤدي تعيين عنصر النموذج إلى تعطيله إلى إيقافه عن الخادم ، على سبيل المثال:

<input disabled="disabled" type="text" name="test"/>

في javascript ، يعني هذا شيئًا مثل هذا:

var inputs = document.getElementsByTagName('input');
for(var i = 0;i < inputs.length; i++) {
    if(inputs[i].style.display == 'none') {
        inputs[i].disabled = true;
    }
}
document.forms[0].submit();

في مسج:

   $('form > input:hidden').attr("disabled",true);
   $('form').submit();
123
karim79

يمكنك استخدام javascript لتعيين السمة المعطلة. من المحتمل أن يكون حدث النقر على زر "إرسال" هو أفضل مكان للقيام بذلك.

ومع ذلك ، أود أن أنصح بعدم القيام بذلك على الإطلاق. إن أمكن ، يجب عليك تصفية استفسارك على الخادم. هذا سيكون أكثر موثوقية.

13
Benedict Cohen

إذا كنت تريد تعطيل جميع العناصر أو عناصر معينة داخل عنصر أصل مخفي ، يمكنك استخدام

$("div").filter(":hidden").children("input[type='text']").attr("disabled", "disabled");

هذا المثال http://jsfiddle.net/gKsTS/ يعطل كل مربعات النص داخل قسم مخفي

7
macio.Jun

ماذا عن:

$('#divID').children(":input").prop("disabled", true); // disable

و

$('#divID').children(":input").prop("disabled", false); // enable

لتبديل جميع إدخالات الأطفال (تحديد ، خانات اختيار ، إدخال ، textareas ، إلخ) داخل div مخفي.

5
Antonio Max

أحد الحلول البسيطة جدًا (وليس الأكثر ملاءمة دائمًا) هو إزالة سمة "الاسم" - يتطلب المعيار عدم إرسال المتصفحات لقيم غير محددة الاسم ، وجميع المتصفحات التي أعرف أنها تلتزم بهذه القاعدة.

3
jsalvata

أود إما إزالة القيمة من المدخلات أو فصل كائن الإدخال من DOM حتى لا يكون هناك نشر في المقام الأول.

1
JMP