نموذج التماس/JSF يرسل زر التشغيل عند النقر على الحدث

StackOverflow https://stackoverflow.com/questions/117189

سؤال

لدي نموذج بحث مع منشئ الاستعلام.يتم تفعيل المنشئ بواسطة زر.شيء من هذا القبيل

<h:form id="search_form">
  <h:outputLabel for="expression" value="Expression"/>
  <h:inputText id="expression" required="true" value="#{searcher.expression}"/>
  <button onclick="openBuilder(); return false;">Open Builder</button>
  <h:commandButton value="Search" action="#{searcher.search}"/>
</h:form>

والنتيجة هي HTML الذي يحتوي على كل من ملف <button/> و <input type="submit"/> في التشكيل.إذا قام المستخدم بإدخال سلسلة في حقل التعبير وضغط على مفتاح الإدخال بدلاً من النقر فوق زر الإرسال، فسيتم عرض منشئ الاستعلام عندما يكون السلوك المتوقع هو إرسال البحث.ما يعطي؟

هل كانت مفيدة؟

المحلول

من المفترض أن يتم استخدام زر في نموذج HTML لإرسال النموذج.قم بتغيير الزر إلى نوع الإدخال = "زر" ويجب إصلاحه.

وبدلاً من ذلك، أضف type="button" إلى عنصر الزر.

نصائح أخرى

كأول مرة، قم بإعطاء معرف لزر البحث.بعد ذلك، في مربع النص، يمكنك اعتراض حدث العميل عند الضغط على الزر لأسفل, ، مع وظيفة (جافا سكريبت) مثل هذا:

  function KeyDownHandler(event)
    {
        // process only the Enter key
        if (event.keyCode == 13)
        {
            // cancel the default submit
            event.returnValue=false;
            event.cancel = true;
            // submit the form by programmatically clicking the specified button
            document.getElementById('searchButtonId').click();
        }
    }

آمل أن أساعدك.

إذا كان هناك حقل إدخال واحد داخل النموذج، تقوم العديد من المتصفحات بإرسال النماذج تلقائيًا عند الضغط على مفتاح الإدخال.

يحاول

  1. أضف حقل إدخال آخر.قم بإخفائه بتصميمه بحيث لا يكون مرئيًا.(على سبيل المثال، <input type="text" name="bogusField" style="display: none;" />
  2. قم بحظر سلوك إرسال نموذج مفتاح الإدخال داخل معالج أحداث JavaScript (على سبيل المثال، هنا أو هنا).والأفضل من ذلك، استخدام مجموعة أدوات واجهة المستخدم الرسومية التي قد تساعد في هذا (على سبيل المثال، GWT)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top