簡體   English   中英

html形式:-onsubmit js函數被調用兩次

[英]html form :- onsubmit js function invoked twice

以下是我從html頁面源獲取的源:

<FORM id=SubmitLogon onsubmit="return validateLoginCredentials()" method=post name=submitLogonForm action=/MyLogin/SubmitLogon.do;jsessionid=s5EXXp3uylxmT10IrEqjlq142HWdNeb-qbeY_q-bTTG2SiuVpY_1!-1968082838 AutoComplete="off">
    <TR>
        <TD class=logonLabelTdTag>Username&nbsp; </TD>
        <TD align=left>
            <DIV id=wwgrp_SubmitLogon_username class=wwgrp>
                <DIV id=wwctrl_SubmitLogon_username class=wwctrl>
                    <INPUT onchange="javascript: this.value=this.value.toUpperCase();" tabIndex=1 onfocus="javascript: this.value=this.value.toUpperCase();" id=SubmitLogon_username class=logonTextBox maxLength=40 name=username>
                </DIV>
            </DIV>
        </TD>
    </TR>

    <TR>
        <TD class=logonLabelTdTag>Password&nbsp; </TD>
        <TD align=left>
            <DIV id=wwgrp_SubmitLogon_password class=wwgrp>
                <DIV id=wwctrl_SubmitLogon_password class=wwctrl>
                    <INPUT tabIndex=2 id=SubmitLogon_password class=logonTextBox maxLength=40 type=password value="" name=password>
                </DIV>
            </DIV>
        </TD>
    </TR>

    <TR>
        <TD colSpan=2 align=right>
            <BUTTON onclick=validateLoginCredentials() style="BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none; HEIGHT: 39px; WIDTH: 98px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none" type=submit value="Login">
                            <IMG src="/images/btn_login.jpg">
                            </BUTTON>
        </TD>
    </TR>
</FORM>
<script>
    function validateLoginCredentials() {
        alert('invoked---');
    }
</script>

當我單擊提交按鈕時,函數validateLoginCredentials()被調用兩次(我通過調用alert('invoked---')注意到了這一點)。

為什么會這樣呢?

因為您要調用它兩次,所以在按鈕單擊事件和在表單提交事件上。 避免任何一個繼續進行。

干杯。

只需從登錄按鈕中刪除onclick=validateLoginCredentials()即可解決問題。

背景:問題是您要告訴表單在提交表單時執行validateLoginCredentials()函數。 並且由於您的登錄按鈕具有type="submit" event type="submit"type="submit"屬性,因此validateLoginCredentials()被調用兩次,一次是提交事件,另一次是onclick事件。

是的,正如Sudheesh所說。

您需要刪除

onclick=validateLoginCredentials()

要么

 type=submit 

當您將按鈕類型設置為提交時,它會自動提交表單,而無需添加任何onclick方法-這就是為什么它被調用兩次的原因。 如果要覆蓋默認行為,可以考慮其他onclick方法。

我建議刪除

onclick=validateLoginCredentials()

因為這是最常用的做法。

干杯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM