2020年8月29日 星期六

[JSP] form.submit()在Chrome無法送出,但在IE正常,最後發現是因缺少submit button

● 問題:同樣的程式在IE可以送出表單,但Chrome卻無法送出。

● 情境說明:form.submit()的動作是寫在jQuery的$.ajax動作完成後,在success: function (response)裡送出表單。

● 釐清問題:

 1.原本以為是Chrome無法接受.submit寫法,因此往瀏覽器語法部份去找。試了以下幾種寫法,都還是沒有辦法產生表單

//結果跟submit一樣,什麼都沒發生

$( "#form1" ).submit(function( event ) {

alert( "Handler for .submit() called." );

    event.preventDefault();

});

//結果跟submit一樣,什麼都沒發生

$('#form1').on('submit',function(e) {

if($('#rpt').val() === "poop"){ //Sample error check

    e.preventDefault();

    alert($('#rpt').val());

    }

});

//至少表單有送出,但是沒有開新視窗執行

var varForm = $(document.getElementsByName("form1"));

var tmp=varForm.attr('action');

$.post(tmp, varForm.serialize()); 


 2.找了幾篇文章後,有人提到可能是html元件的問題,發現這才是我的情況。

  我的情況是當情況A的時候,按下【查詢A】按鈕,要先觸發ajax,ajax成功時才呼叫form.submit()。

  情況B的時候,按下【查詢B】按鈕,直接做form.submit()。

<form id="form1" name="form1" method="post" action="Qry.jsp" target="_blank">

if(cond A){

<input type="button" id="queryA" value="查詢A">

}else{

<input type="submit" id="queryB" value="查詢B">

}


● 解決方法:眼尖的您是否已經發現當情況A(cond A)的時候,JSP畫面上是沒有submit按鈕的

 也就是Chrome瀏覽器因為找不到submit按鈕,而無法進行form.submit的動作,因此什麼動作都沒進行;但IE可以在沒有按鈕的情況下繼續送出該表單。

 只要在情況A裡面加入一個隱藏的submit按鈕,Chrome就可以跟IE一樣正常執行form.submit。

<form id="form1" name="form1" method="post" action="Qry.jsp" target="_blank">

if(cond A){

<input type="button" id="queryA" value="查詢A">

<input type="submit" id="queryASubmit" value="送出A" hidden>

}else{

<input type="submit" id="queryB" value="查詢B">

}


● 參考資料

 1.Form SUBMIT not working in Chrome/3WA問題解決專家工作室

一開始是往這個方向去找,使用網頁中提到的$post寫法可以送出表單,但仍然無法達成我想要的開新視窗目的。

 2.Form Submit not Working in Chrome?/Stack Overflow

文中有人建議他修改button name,以及有人提到他的Chrome console也沒有報錯,但清除cache之後就可用,因此給了我可能是html元件問題的靈感,最後發現是因缺少submit button造成Chrome無法送出。


Copyright © 2020 JavaSparrowK All rights reserved.

版權所有‧謝絕轉載

[閱讀] 上海450平方呎小宅,活現中西共融的生活設計(Home Journal/By: Nikey Cheng)

原文網址:https://www.homejournal.com/zh/article/3049/homes/%E4%B8%8A%E6%B5%B7450%E5%B9%B3%E6%96%B9%E5%91%8E%E5%B0%8F%E5%AE%85%E6%B4%BB%E7%8F%BE%E4%B8%AD%E8%A5%BF%E5%85%B1%E8%9E%8D%E7%9A%84%E7%94%9F%E6%B4%BB%E8%A8%AD%E8%A8%88

  有些設計在瀏覽後會讓人過目不忘,難以忘懷,這間挑高有弧面窗景、原為舞會廳的住宅,就是這樣別緻讓人印象深刻的設計。

  這個小宅最亮眼的就是落地窗景,如此的窗景沒有幾間城市咖啡館可以擁有,住家因這樣的窗景瞬時轉化成咖啡館,在自家即可享有充分的自然光。可以想見於此窗前閱讀、寫作及啜飲咖啡,會是多麼美好的時光。

  450平方呎的小宅約為12.65坪,如此的設計已經將空間的層次感增加,也較傳統的設計開闊不少;但由於空間仍然有限,在幾乎一半的空間為窗景所用後,生活的空間因此也相當有限。

  只能將廚房與洗衣機放置在一起,空間內也只能設置電磁爐無法使用瓦斯爐,也無法設置內置的大烤箱或烘碗機等用具。且一進門必須先往下三個階梯才能到達平台,再下一個階梯到達廚房,再上四個階梯到窗景咖啡區,無法像一般住家的同一層總希望是平地,不需要常拾級上下。

  另外是挑高空間中的夾層雖然很別緻,但上樓必須要爬細梯而上,想想若晚上有尿意仍必須爬梯而下;且雙人床放置的位子有點太新潮了些,我就無法想像自己可以在那樣的高度安睡,會希望床頭板再高一點,也希望床邊的護欄再高一點。

  且上層的工作室雖然看似很美好,但我個人喜歡較厚實的桌子,也偏好較高的層板,且後方由於留下大門的空間,而使工作桌只能是長條形,也無法更寬。

  欣賞之後雖然覺得這樣的設計很是美麗,但實在不太適合自己居住,也只能讓這個美好的窗景設計留在夢想裡欣賞了。