मेरे पास फ्लास्क एप्लिकेशन है, जब मैं इनपुट सबमिट बटन पर क्लिक करता हूं तो पृष्ठों में से एक फॉर्म फॉर्म अनुरोध भेजता है, मैं क्लिक के बाद इनपुट बटन को अक्षम करना चाहता हूं। ऐसा करने के लिए, मैंने jQuery fucntion लिखा है और इसे इनपुट तत्व से जोड़ा है।

एज ब्राउज़र में सब कुछ पूरी तरह से काम करता है, लेकिन जब मैं क्रोम में परीक्षण करता हूं, तो बटन अक्षम हो जाता है, लेकिन पोस्ट अनुरोध सर्वर पर नहीं भेजा जाता है।

JQuery स्क्रिप्ट जो लोडिंग gif और ब्लॉक सबमिट इनपुट बटन दिखाती है:

function loading() {
  if ($('#calendar1').val() && $('#calendar2').val()) {
    $("#loading").show();
    $("#content").hide();
    $(':input[type="submit"]').prop('disabled', true);
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="" class="ordinary_form" id="wifi_form">
  <label for="calendar1"> Choose time period start: </label>
  <input type="date" name="calendar1" id="calendar1" required> <br> <br>
  <label for="calendar2"> Choose time period end: </label>
  <input type="date" name="calendar2" id="calendar2" required></p>
  <label for="period"> Choose step: </label>
  <select required name="period" id="period">
    <option selected value="0">Day</option>
    <option value="1">Week</option>
    <option value="2">Month</option>
  </select>
  <br><br>
  <input target="_self" type="submit" value="Send" formtarget="{{url_for('wifi')}}" formmethod="post" onclick="loading();">
</form>

पायथन कोड (मुझे लगता है कि आपको इसकी आवश्यकता नहीं है, लेकिन इसे यहां रहने दें):

@app.route("/wifi", methods=["GET", "POST"])
@flask_login.login_required
def wifi():
    # something here
        if request.method == 'POST':
            start_date = request.form["calendar1"]
            end_date = request.form["calendar2"]
            period = request.form["period"]
            # do some work
    return render_template("wifi.html", result_dict=result_dict, wifipic="wifi" + pic_end)

0
Artiom Kozyrev 31 अक्टूबर 2019, 16:46

1 उत्तर

सबसे बढ़िया उत्तर

क्योंकि आप केवल सबमिट ईवेंट में ही ऐसा कर सकते हैं

बटन के क्लिक पर ही बटन को अक्षम करने से फॉर्म जमा होने से रुक जाएगा

ऐसा भी लगता है कि आपका formtarget="{{url_for('wifi')}}" formmethod="post" हटा दिया जाना चाहिए। जब आपके पास पहले से कोई फॉर्म हो तो उसे सेट करने की आवश्यकता नहीं है

किसी भी स्थिति में प्रारूप लक्ष्य एक यूआरएल नहीं है - आपका मतलब फॉर्मेशन हो सकता है

$("#wifi_form").on("submit",function() {
    if ($('#calendar1').val() && $('#calendar2').val()) {
      $("#loading").show();
      $("#content").hide();
      $(':input[type="submit"]').prop('disabled', true);
    }
  })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form method="post" action="{{url_for('wifi')}}" class="ordinary_form" id="wifi_form">
  <label for="calendar1"> Choose time period start: </label>
  <input type="date" name="calendar1" id="calendar1" required> <br> <br>
  <label for="calendar2"> Choose time period end: </label>
  <input type="date" name="calendar2" id="calendar2" required></p>
  <label for="period"> Choose step: </label>
  <select required name="period" id="period">
    <option selected value="0">Day</option>
    <option value="1">Week</option>
    <option value="2">Month</option>
  </select>
  <br><br>
  <input type="submit" value="Send" >
</form>
1
mplungjan 31 अक्टूबर 2019, 14:03