set - تعيين قيمة الحقل المخفي في نموذج باستخدام jQuery's ".val ()" لا يعمل





hidden-fields (13)


<javascript>


slots=''; hidden=''; basket = 0;

    cost_per_slot = $("#cost_per_slot").val();
    //cost_per_slot = parseFloat(cost_per_slot).toFixed(2)

    for (i=0; i< check_array.length; i++) {
        slots += check_array[i] + '\r\n';
        hidden += check_array[i].substring(0, 8) + '|';
        basket = (basket + parseFloat(cost_per_slot));
    }

    // Populate the Selected Slots section
    $("#selected_slots").html(slots);

    // Update hidden slots_booked form element with booked slots
    $("#slots_booked").val(hidden);     

    // Update basket total box
    basket = basket.toFixed(2);
    $("#total").html(basket);

كنت أحاول تعيين قيمة حقل مخفي في نموذج باستخدام jQuery ، ولكن دون نجاح.

هنا هو نموذج التعليمة البرمجية التي تشرح المشكلة. إذا احتفظ بنوع الإدخال إلى "نص" ، فإنه يعمل دون أي مشكلة. لكن تغيير نوع الإدخال إلى "مخفي" لا يعمل!

<html>

    <head>
        <script type="text/javascript" src="jquery.js">
        </script>
        <script type="text/javascript">
            $(document).ready(function() {
                $("button").click(function() {
                    $("input:text#texens").val("tinkumaster");
                });
            });
        </script>
    </head>

    <body>
        <p>
            Name:
            <input type="hidden" id="texens" name="user" value="texens" />
        </p>
        <button>
            Change value for the text field
        </button>
    </body>

</html>

لقد حاولت أيضًا الحل البديل التالي ، عن طريق تعيين نوع الإدخال إلى "نص" ثم استخدام نمط "display: none" لمربع الإدخال. لكن هذا يفشل أيضًا! يبدو أن jQuery لديه بعض المشاكل في تحديد حقول الإدخال المخفية أو غير المرئية.

أيه أفكار؟ هل هناك حل لهذا الأمر الذي يعمل بالفعل؟




:text سيفشل :text لإدخال بقيمة نوع hidden . كما أنه أكثر فعالية من مجرد الاستخدام:

$("#texens").val("tinkumaster");

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

مثال على http://jsbin.com/elovo/edit ، باستخدام رمز المثال الخاص بك في http://jsbin.com/elovo/2/edit




كان عندي نفس المشكلة. الغريب جوجل الكروم وربما غيرها (لم تكن متأكدا) لم يعجبه

$("#thing").val(0);

input type="hidden" id="thing" name="thing" value="1" />

(لا تغيير)

$("#thing").val("0");

input type="hidden" id="thing" name="thing" value="1" />

(لا تغيير)

لكن هذا يعمل !!!!

$("#thing").val("no");

input type="hidden" id="thing" name="thing" value="no" />

التغيرات !!

$("#thing").val("yes");

input type="hidden" id="thing" name="thing" value="yes" />

التغيرات !!

يجب أن يكون "شيئًا"




ببساطة استخدام بناء الجملة أدناه للحصول على وتعيين

احصل على

//Script 
var a = $("#selectIndex").val();

هنا سوف يحمل متغير قيمة hiddenfield (selectindex)

جانب الخادم

<asp:HiddenField ID="selectIndex" runat="server" Value="0" />

جلس

var a =10;
$("#selectIndex").val(a);



أي شخص آخر يعاني من هذا ، هناك طريقة "بسيطة" بسيطة للغاية للقيام بذلك باستخدام jQuery:

<input type="search" placeholder="Search" value="" maxlength="256" id="q" name="q" style="width: 300px;" onChange="$('#ADSearch').attr('value', $('#q').attr('value'))"><input type="hidden" name="ADSearch" id="ADSearch" value="">

يقوم هذا بتعيين قيمة الحقل المخفي حيث يتم كتابة النص في الإدخال المرئي باستخدام حدث onChange. مفيدة (كما في حالتي) حيث تريد تمرير قيمة حقل إلى نموذج "البحث المتقدم" ولا تجبر المستخدم على إعادة كتابة استعلام البحث الخاص به.




في حالتي ، كنت أستخدم عددًا غير صحيح (عدد صحيح) لأن معلمة val () التي لا تعمل ، فالخدعة بسيطة مثل

$("#price").val('' + price);



$('input[name=hidden_field_name]').val('newVal');

عملت بالنسبة لي ، عندما لا

$('input[id=hidden_field_id]').val('newVal');

ولا

$('#hidden_field_id').val('newVal');

فعل.




في الواقع ، هذه مشكلة مستمرة. عندما يكون Andy محقاً حول المصدر الذي تم تنزيله ، لا يبدو أن .val (...) و .attr ('value'، ...) يقومان بالفعل بتعديل html. أعتقد أن هذه مشكلة javascript وليست مشكلة jquery. إذا كنت قد استخدمت firebug حتى لو كان لديك نفس السؤال. على الرغم من أنه يبدو أنه في حالة إرسال النموذج بالقيم المعدلة ، فإن HTML لا يتغير. لقد واجهت هذه المشكلة في محاولة إنشاء معاينة قبل الطباعة للنموذج المعدل (القيام [form] .html ()) فإنه ينسخ كل شيء على ما يرام ، بما في ذلك جميع التغييرات باستثناء التغييرات القيم. وبالتالي ، فإن معاينة الطباعة التقليدية غير مجدية إلى حد ما ... قد يكون الحل البديل الخاص بي هو "إنشاء" نموذج مخفي يحتوي على القيم التي أضافوها ، أو إنشاء معاينة بشكل مستقل وإجراء كل تعديل يقوم المستخدم بتعديله أيضًا. كلاهما غير مثالي ، ولكن ما لم يكتشف شخص ما سبب عدم تغيير سلوك إعداد القيمة لـ html (في DOM i'm المفترض) فإنه يجب القيام به.




كنت أواجه نفس المشكلة ، ووجدت ما هو الخطأ. لقد حددت HTML على النحو

<form action="url" method="post">
    <input type="hidden" id="email" />
<form>
<script>
    function onsomeevent()
    {
       $("#email").val("[email protected]");
    }
</script>

تؤدي قراءة قيم النموذج على الخادم دائمًا إلى جعل البريد الإلكتروني فارغًا. بعد خدش رأسي (والعديد من عمليات البحث) ، أدركت أن الخطأ لا يحدد الشكل / الإدخال بشكل صحيح. عند تعديل الإدخال (كما هو موضح أدناه) ، كان يعمل مثل السحر

<input type="hidden" id="email" name="email" />

إضافة إلى هذا الموضوع في حالة وجود مشكلة أخرى.




إذا كنت تواجه مشكلة في تعيين قيمة حقل مخفي نظرًا لأنك تقوم بتمرير معرف له ، فهذا هو الحل:

بدلاً من $("#hidden_field_id").val(id) فقط يقوم $("input[id=hidden_field_id]").val(id) . لست متأكدا ما هو الفرق ، لكنه يعمل.




استخدام val() لم يعمل بالنسبة لي. اضطررت لاستخدام .attr() كل مكان. كما كان لدي أنواع مختلفة من المدخلات وكان لابد أن يكون واضحًا جدًا في حالة مربعات الاختيار والقوائم المختارة.

تحديث حقل النص

$('#model_name').attr('value',nameVal);

قم بتحديث الصورة بجانب إدخال الملف

$('#img-avatar').attr('src', avatarThumbUrl);

تحديث منطقي

if (isActive) {
    $('#model_active').attr('checked',"checked");
} else {
    $('#model_active').attr('checked', null) ;
}

تحديث حدد (مع الرقم أو السلسلة)

$('#model_framerate').children().each(function(i, el){
    var v = $(el).val();
    if (v === String(framerateVal)) { 
        $(el).attr('selected','selected');
    } else {
        $(el).attr('selected',null);
    }
}



لم يعمل .val بالنسبة لي ، لأنني الاستيلاء على الجانب الخادم سمة القيمة ولم تكن دائما تحديث القيمة. لذلك اعتدت:

var counter = 0;
$('a.myClickableLink').click(function(event){
   event.preventDefault();
   counter++;

   ...
   $('#myInput').attr('value', counter);
}

آمل أن يساعد شخص ما.




توفر الطرق طبقات مختلفة من التجريد.

  • $.ajax() يمنحك السيطرة الكاملة على طلب Ajax. يجب عليك استخدامه إذا كانت الطرق الأخرى لا تلبي احتياجاتك.

  • $.get() ينفذ طلب Ajax GET . سيتم تمرير البيانات التي تم إرجاعها (والتي يمكن أن تكون أي بيانات) إلى معالج الاستدعاء الخاص بك.

  • $(selector).load() بتنفيذ طلب Ajax GET وسيقوم بتعيين محتوى البيانات المرتجعة المحددة (التي يجب أن تكون إما نص أو HTML).

يعتمد ذلك على الوضع الذي يجب أن تستخدمه. إذا كنت تريد أن تفعل أشياء بسيطة ، ليست هناك حاجة إلى عناء مع $.ajax() .

على سبيل المثال ، لن تستخدم $.load() ، إذا كانت البيانات التي تم إرجاعها هي JSON التي تحتاج إلى مزيد من المعالجة. هنا يمكنك استخدام $.ajax() أو $.get() .





jquery set hidden-fields