شكل عدم تقديمها مع شبيبة
-
10-07-2019 - |
سؤال
لقد العالمين أبسط وظيفة جافا سكريبت:
fnSubmit()
{
window.print();
document.formname.submit();
}
وهو ما يسمى من قبل:
<button type="button" id="submit" onclick="fnSubmit()">Submit</button>
كل ما هو جيد في مربع حوار الطباعة يظهر إلا بعد الطباعة أو إلغاء الطباعة أحصل على الخطأ التالي:
"الوثيقة.formname.يقدم ليست وظيفة"
النموذج على النحو التالي:(من الواضح أنا لا تستخدم formname في رمز الفعلي ولكن يمكنك الحصول على فكرة)
<form name="formname" id="formname" method="post" action="<?=$_SERVER['SCRIPT_NAME']?>">
ومن الواضح أنا لا أحاول أن تفعل أي شيء خاص هنا يجب استخدام نهج مماثلة في الماضي ، ما في العالم أنا في عداد المفقودين هنا ؟
المحلول
باختصار:تغيير معرف من زر إرسال إلى شيء مختلف عن "إرسال".أيضا لا تعيين اسم هذه القيمة أيضا.
الآن بعض أعمق.الحالة العامة هو أن document.formname.submit
هو الأسلوب الذي عندما دعا ، سيتم إرسال النموذج.ومع ذلك ، في سبيل المثال ، document.formname.submit
ليست الطريقة بعد الآن ، ولكن دوم عقدة تمثل زر.
يحدث هذا لأن عناصر النموذج كما تتوفر سمات من عقدة DOM, عبر name
و id
سمات.هذه الصياغة هو مربكا بعض الشيء, لذلك هنا يأتي مثال على ذلك:
<form name="example" id="example" action="/">
<input type="text" name="exampleField" />
<button type="button" name="submit" onclick="document.example.submit(); return false;">Submit</button>
</form>
على هذا المثال ، document.forms.example.exampleField
هو دوم عقدة تمثل مجال مع اسم "exampleField".يمكنك استخدام شبيبة للوصول إلى خصائص مثل قيمته: document.forms.example.exampleField.value
.
ومع ذلك, على سبيل المثال هناك عنصر من النموذج يسمى "إرسال" و هذا هو زر إرسال, التي يمكن الوصول إليها مع document.forms.example.submit
.هذه الكتابة القيمة السابقة التي كانت الوظيفة التي تتيح لك إرسال النموذج.
تحرير:
إن إعادة تسمية المجال ليست جيدة بالنسبة لك ، هناك حل آخر.قبل وقت قصير من كتابة هذا تركت السؤال على الموقع و حصلت على رد في شكل أنيق جافا سكريبت هاك:
function hack() {
var form = document.createElement("form");
var myForm = document.example;
form.submit.apply(myForm);
}
انظر كيفية موثوق تقديم نموذج HTML مع جافا سكريبت ؟ للحصول على تفاصيل كاملة
نصائح أخرى
وبالنظر إلى أن النموذج الخاص بك وعلى حد سواء id
وname
محددة، هل يمكن استخدام أي واحد من هؤلاء:
ومع form
العلامة id
ل:
document.getElementById('formname').submit();
مع السمة form
العلامة name
ل:
document.forms['formname'].submit();
وجرب هذا:
fnSubmit()
{
window.print();
document.getElementById("formname").submit();
}
والمذنب الأكثر احتمالا هو IE الخلط بين المتغيرات جافا سكريبت، هويات، والأسماء. بحث في المصدر لتقاسم اسم النموذج الخاص بك شيء.
- وضع زر الإدخال داخل النموذج الخاص بك.
- تعطي tabindex="-1" على ذلك.
- جعلها غير مرئية باستخدام style="display:none;".
مثل هذا
<input type="submit" tabindex="-1" style="display:none;" />